Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie wendet man 3 Werte für 1 Zeile auf 3 Zeilen mit jedem Wert an?

Nun, ich werde Ihnen keine vollständige Lösung geben, aber wenn ich solche aufgeteilten Daten benötige, würde ich versuchen, sqlxml zu verwenden (Sie müssen es mit einer großen Anzahl von Zeilen ausprobieren, um zu überprüfen, ob die Leistung für Sie in Ordnung ist):

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)

siehe sql fiddle demo um es auszuprobieren.