首页 > 数据库 > mysql教程 > 如何使用 SQL Server 的 GROUP BY 将唯一值连接成逗号分隔的字符串?

如何使用 SQL Server 的 GROUP BY 将唯一值连接成逗号分隔的字符串?

Susan Sarandon
发布: 2025-01-10 17:47:42
原创
156 人浏览过

How to Concatenate Unique Values into a Comma-Separated String Using SQL Server's GROUP BY?

使用 SQL Server 的 GROUP BY 将唯一值聚合到逗号分隔的列表中

挑战:
给定一个包含重复条目的表,目标是按特定列对数据进行分组,并将另一列中的唯一值合并到单个逗号分隔的字符串中。

示例数据:

下表说明了初始数据集:

ID ReportId Email
1 1 [email protected]
2 2 [email protected]
3 1 [email protected]
4 3 [email protected]
5 3 [email protected]

目标结果:

期望的结果是一个包含合并电子邮件地址的表格:

ReportId Email
1 [email protected], [email protected]
2 [email protected]
3 [email protected], [email protected]

使用 GROUP BY 和 STUFF 的解决方案:

STUFF 函数用于有效连接字符串,删除前导字符。 解决办法如下:

<code class="language-sql">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;</code>
登录后复制

详细说明:

核心逻辑涉及STUFF函数内的子查询。此子查询迭代与外部查询的当前行共享相同 ReportId 的所有行。 对于每个匹配行,它将一个逗号和 Email 值附加到累积字符串中。 然后,外部查询使用 GROUP BY 为每个唯一的 ReportId 聚合这些串联的电子邮件字符串。 STUFF 函数删除初始逗号和空格。

以上是如何使用 SQL Server 的 GROUP BY 将唯一值连接成逗号分隔的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板