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