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

我正在寻找一个查询,但是以某种方式我无法这样做。有人可以帮我吗?


原始数据


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

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


我正在尝试group by子句,但是如果还有其他问题,那么我也愿意实施。非常感谢您的宝贵时间,并为此提供帮助。谢谢。


慕姐4208626
浏览 883回答 2
2回答

饮歌长啸

尝试这个:SELECT ReportId, Email =     STUFF((SELECT ', ' + Email           FROM your_table b            WHERE b.ReportId = a.ReportId           FOR XML PATH('')), 1, 2, '')FROM your_table aGROUP BY ReportId

繁花不似锦

SELECT  [ReportId],         SUBSTRING(d.EmailList,1, LEN(d.EmailList) - 1) EmailListFROM        (            SELECT DISTINCT [ReportId]            FROM Table1        ) a        CROSS APPLY        (            SELECT [Email] + ', '             FROM Table1 AS B             WHERE A.[ReportId] = B.[ReportId]            FOR XML PATH('')        ) D (EmailList) 
打开App,查看更多内容
随时随地看视频慕课网APP