SQL Server:GROUP BY子句获取逗号分隔值

可能重复:
SQL Server中的SQL group_concat函数

我期待创build一个查询,但不知何故,我无法这样做。 任何人都可以请帮我在这里?

原始数据

ID ReportId Email 1 1 a@a.com 2 2 b@b.com 3 1 c@c.com 4 3 d@d.com 5 3 e@e.com 

我想通过ReportId分组,但所有的电子邮件应逗号分隔。 所以结果应该是:

 ReportId Email 1 a@a.com, c@c.com 2 b@b.com 3 d@d.com, e@e.com 

做这个的最好方式是什么?

我正在尝试群体条款,但如果有任何其他的事情,那么我也愿意实施。 我真的很感激你的时间和帮助。 谢谢。

尝试这个:

 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 

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) 

SQLFiddle演示