Ich habe eine Tabelle mit SortOrder und DiagnosisCodes.SQL Server 2012 Spalten in einzelne Zeile getrennt durch Komma
Ich brauche die DiagnosisCodes in einer Zeile für jeden unterschiedlichen Satz von SortOrders zu sehen.
Ich habe eine Tabelle mit SortOrder und DiagnosisCodes.SQL Server 2012 Spalten in einzelne Zeile getrennt durch Komma
Ich brauche die DiagnosisCodes in einer Zeile für jeden unterschiedlichen Satz von SortOrders zu sehen.
Verwendung FOR XML PATH
DECLARE @diagnosis TABLE (id INT, diagnosiscode VARCHAR(10))
INSERT INTO @diagnosis VALUES
(1,'D50.9'),
(1,'M10.9'),
(1,'Z79.82'),
(2,'M81.0'),
(2,'Z85.3'),
(2,'Z90.710'),
(3,'M81.0'),
(3,'Z85.3'),
(3,'Z17.0')
SELECT t.id,
STUFF((SELECT ', ' + diagnosiscode
FROM @diagnosis
WHERE id = t.id
FOR XML PATH(''),TYPE)
.value('.','NVARCHAR(MAX)'),1,2,'') AS alldiagnosiscodes
FROM @diagnosis t
GROUP BY t.id
ORDER BY t.id
Ergebnis
id alldiagnosiscodes
1 D50.9, M10.9, Z79.82
2 M81.0, Z85.3, Z90.710
3 M81.0, Z85.3, Z17.0
Sie gesehen haben, Danke für die Vorlage! Kannst du etwas mehr erklären? Ich habe einige Antworten gesehen, aber ich verstehe nicht, was es tut. – cmpmd2
FOR XML PATH können Sie das Ergebnis der Abfrage als XML-Elemente ausgeben, die in der Regel so etwas wie <>> ist, aber damit ist es, (Komma). Und STUFF ersetzt die Zeichen von 1 bis 2 durch Leerzeichen (1,2, ''). –
Spielen Sie mit der Probe. Versuchen Sie, (Komma) mit anderen Zeichen zu ändern, oder Sie können '<>' + diagnosecode + '>' verwenden und sehen, was passiert. Das STUFF entfernt die ersten 2 Zeichen wie definiert mit (1,2, ''), um leer zu sein, daher wird Ihr Ergebnis kein '<>' am Anfang des Ergebnisses haben. –
Dies ist das erste Mal, dass ich ICD-Codes normalisiert – scsimon