2017-08-18 7 views

Antwort

2

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 
+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

+0

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, ''). –

+0

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. –

Verwandte Themen