Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment appliquer 3 valeurs pour 1 ligne à 3 lignes avec chaque valeur ?

Eh bien, je ne vais pas vous donner une solution complète, mais si j'ai besoin de données fractionnées comme celle-ci, j'essaierais d'utiliser sqlxml (vous devez l'essayer sur un grand nombre de lignes pour vérifier si les performances vous conviennent):

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)

voir démo de violon SQL pour l'essayer.