SQL – Plusieurs lignes en une seule

Tout d'abord, j'ai regardé cela , et ma question est différente – quoique légèrement. J'ai aussi essayé l'approche et j'ai essayé de la modifier pour qu'elle fonctionne pour moi, mais pas de dés.

Question:

À partir d'un résultat de quelques requêtes, j'obtiens le résultat suivant:

ID | NAME | DESCID | TALL | GOODLOOKING | FAT _______________________________________________________________ 1 | John | 1 | '1.8m' | Null | Null 1 | John | 2 | Null | 'Yes' | Null 1 | John | 3 | Null | Null | '84kg' 1 | John | 4 | Null | Null | '85kg' 

Note: Juste quelques données fictives BTW.

J'ai besoin que la sortie soit la suivante:

 ID | NAME | TALL | GOODLOOKING | FAT __________________________________________________________ 1 | John | '1.8m' | 'Yes' | '84kg|85kg' 

Si cela n'est pas possible, j'apprécierais de le savoir, alors n'hésitez pas à me le dire.

N'importe quelle légende SQL d'aide?

Il n'y a rien de tel que Group_Concat dans SQL Server qui peut être utilisé directement. Vous pouvez utiliser FOR XML dans une requête corrélée

 SELECT ID,NAME, STUFF((SELECT '|'+TALL FROM Tbl1 t2 WHERE t2.ID = t1.ID AND t2.NAME = t1.NAME ORDER BY t2.descid FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)'),1,1,'') as tall, STUFF((SELECT '|'+GOODLOOKING FROM Tbl1 t2 WHERE t2.ID = t1.ID AND t2.NAME = t1.NAME ORDER BY t2.descid FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)'),1,1,'') as GOODLOOKING, STUFF((SELECT '|'+FAT FROM Tbl1 t2 WHERE t2.ID = t1.ID AND t2.NAME = t1.NAME ORDER BY t2.descid FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)'),1,1,'') as FAT FROM Tbl1 t1 GROUP BY ID,NAME 

SQL Fiddle