SQL Server : GROUP BY clause to get comma-separated values

标签 sql sql-server-2008

Possible Duplicate:
SQL group_concat function in SQL Server

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

原始数据

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 子句,但如果有任何其他事情,那么我也愿意实现它。我非常感谢您的时间和帮助。谢谢。

最佳答案

试试这个:

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

关于SQL Server : GROUP BY clause to get comma-separated values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12668528/

相关文章:

sql - 你如何确定Postgresql中一列的平均总数?

c# - 在 LINQ 中复制 SQL 查询

mysql - gridview 更新时输入字符串的格式不正确

sql-server - 通过互联网连接 sql server 2005/2008

sql-server - 存储过程与表值函数的 OUTPUT 子句

SQL 将子查询 'Total Records' 返回给外部查询

java - 从 SQL 到 HTML UL 的树状结构

sql - 将 varchar 值 'Blue color' 转换为数据类型 int 时转换失败

sql-server - SQL Server Management Studio 中的错误 : Package 'Microsoft SQL Management Studio Package' failed to load.

sql-server - TSQL : Incrementing a column value based on another column's value (SQL Server)