在 SQL Server 中聚合电子邮件:GROUP BY 和 STUFF() 解决方案
SQL Server 的 GROUP BY
子句对于汇总数据非常强大。 一项常见的任务是将多行的值组合成一个字符串,通常以逗号分隔。 使用 STUFF()
.
让我们用一个示例员工报告表来说明:
ID | ReportId | |
---|---|---|
1 | 1 | john@example.com |
2 | 2 | mary@example.com |
3 | 1 | jane@example.com |
4 | 3 | david@example.com |
5 | 3 | susan@example.com |
要使用逗号作为分隔符连接与每个 ReportId
关联的电子邮件,此查询有效:
<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
分组。内部查询使用 FOR XML PATH('')
连接每个组的电子邮件。 STUFF()
然后删除前导逗号和空格。
查询的输出:
ReportId | |
---|---|
1 | john@example.com, jane@example.com |
2 | mary@example.com |
3 | david@example.com, susan@example.com |
以上是如何使用 SQL Server 的 GROUP BY 和 STUFF() 按 ReportId 连接电子邮件?的详细内容。更多信息请关注PHP中文网其他相关文章!