SQL Server: clausola GROUP BY per ottenere valori separati da virgole

Possibile duplicato:
Funzione SQL group_concat in SQL Server

Sto cercando di creare una query ma in qualche modo non riesco a farlo. Qualcuno può aiutarmi per favore qui?

I dati originali

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

Voglio raggruppare per ReportId , ma tutte le email devono essere separate da virgole. Quindi il risultato dovrebbe essere:

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

Qual è il modo migliore per farlo?

Sto provando il gruppo per clausola, ma se c’è qualcos’altro, sono aperto a implementare anche questo. Apprezzo molto il tuo tempo e l’aiuto su questo. Grazie.

prova questo:

 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 

Demo di fiddle 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) 

Demo di SQLFiddle