2017-08-18 3 views

Répondre

2

Utilisation 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 

Résultat

id alldiagnosiscodes 
1 D50.9, M10.9, Z79.82 
2 M81.0, Z85.3, Z90.710 
3 M81.0, Z85.3, Z17.0 
+0

Merci de soumettre! Pouvez-vous expliquer un peu plus? J'ai vu des réponses comme ça mais je ne comprends pas ce que ça fait. – cmpmd2

+0

FOR XML PATH vous permet de sortir le résultat de la requête sous la forme d'éléments XML qui sont généralement quelque chose comme <> mais avec ceci, il s'agit de (virgule). Et STUFF remplace les caractères de 1 à 2 par des blancs (1,2, ''). –

+0

Jouer avec l'échantillon. Essayez de changer, (virgule) avec d'autres caractères ou vous pouvez utiliser '<>' + diagnosticiscode + '' et voir ce qui se passe. Le STUFF enlèvera les 2 premiers caractères tels que définis avec (1,2, '') à blanc, ainsi votre résultat n'aura pas de '<>' au début du résultat. –