SQL Server: clause GROUP BY pour obtenir des valeurs séparées par des virgules

Duplication possible:
Fonction SQL group_concat dans SQL Server

Je cherche à créer une requête mais je suis incapable de le faire. Quelqu’un peut-il m’aider s’il vous plaît ici?

Les données d’origine

ID ReportId Email 1 1 [email protected] 2 2 [email protected] 3 1 [email protected] 4 3 [email protected] 5 3 [email protected] 

Je veux grouper par ReportId , mais tout le courrier électronique doit être séparé par des virgules. Donc, le résultat devrait être:

 ReportId Email 1 [email protected], [email protected] 2 [email protected] 3 [email protected], [email protected] 

Quelle est la meilleure façon de procéder?

J’essaie la clause group by mais s’il y a autre chose, alors je suis ouvert à la mettre en œuvre. J’apprécie vraiment votre temps et votre aide à ce sujet. Je vous remercie.

essaye ça:

 SELECT ReportId, Email = STUFF((SELECT ', ' + Email FROM your_table b WHERE b.ReportId = a.ReportId FOR XML PATH('')), 1, 2, '') FROM your_table a GROUP BY ReportId 

Démo de violon SQL

 SELECT [ReportId], SUBSTRING(d.EmailList,1, LEN(d.EmailList) - 1) EmailList FROM ( SELECT DISTINCT [ReportId] FROM Table1 ) a CROSS APPLY ( SELECT [Email] + ', ' FROM Table1 AS B WHERE A.[ReportId] = B.[ReportId] FOR XML PATH('') ) D (EmailList) 

Démo SQLFiddle