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

可能的复制品:
SQL Server 中的 SQL group _ concat 函数

我希望创建一个查询,但不知何故,我无法这样做。有人能帮帮我吗?

原始数据

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

最好的方法是什么?

我正在尝试的小组条款,但如果有任何其他的东西,那么我是开放的实施,也。我真的很感谢你的时间和帮助。谢谢你。

160566 次浏览

try this:

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 fiddle demo

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 Demo