Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come applicare 3 valori per 1 riga a 3 righe con ogni valore?

Bene, non ti darò una soluzione completa, ma se ho bisogno di dati divisi come questo, proverei a usare sqlxml (devi provarlo su un numero elevato di righe per verificare se le prestazioni sono ok per te):

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)

vedi sql fiddle demo per provarlo.