Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como aplicar 3 valores para 1 linha a 3 linhas com cada valor?


Bem, eu não vou te dar uma solução completa, mas se eu precisar dividir dados como este, eu tentaria usar sqlxml (você tem que experimentá-lo em um grande número de linhas para verificar se o desempenho está ok para você):
declare @x table (prm int,iin varchar(20))

insert into @x values(1, 'A/B/C')
insert into @x values(3, 'D')
insert into @x values(2, 'R/G')

select
    x.prm, x.iin, T.C.value('.', 'nvarchar(max)') as oout
from @x as x
    outer apply (
        select cast('<d>' + replace(x.iin, '/', '</d><d>') + '</d>' as xml) as Data
    ) as D
    outer apply D.Data.nodes('d') as T(C)

veja demonstração do violino sql experimentá-lo.