J'ai une table avec SortOrder et DiagnosisCodes.Colonnes SQL Server 2012 à une seule ligne séparées par des virgules
Je dois voir les DiagnosisCodes dans une ligne pour chaque ensemble différent de SortOrders.
J'ai une table avec SortOrder et DiagnosisCodes.Colonnes SQL Server 2012 à une seule ligne séparées par des virgules
Je dois voir les DiagnosisCodes dans une ligne pour chaque ensemble différent de SortOrders.
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
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
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, ''). –
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. –
C'est la première fois que je vois les codes de la CIM normalisée – scsimon