首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL Server : GROUP BY子句以获取逗号分隔值

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

Stack Overflow用户
提问于 2012-10-01 14:37:42
回答 2查看 140.6K关注 0票数 97

可能重复:

SQL group_concat function in SQL Server

我正在寻找创建一个查询,但不知何故,我无法这样做。有谁能帮帮我吗?

原始数据

代码语言:javascript
复制
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分组,但是所有的电子邮件都应该用逗号分隔。所以结果应该是:

代码语言:javascript
复制
ReportId     Email
1            a@a.com, c@c.com
2            b@b.com
3            d@d.com, e@e.com

做这件事最好的方法是什么?

我正在尝试group by子句,但如果还有其他事情,我也愿意实现它。我真的很感谢你在这件事上的时间和帮助。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-01 14:40:10

试试这个:

代码语言:javascript
复制
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

票数 194
EN

Stack Overflow用户

发布于 2012-10-01 14:40:48

代码语言:javascript
复制
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

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12668528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档