首页 > 数据库 > mysql教程 > 如何使用 SQL Server 的 GROUP BY 和 STUFF() 按 ReportId 连接电子邮件?

如何使用 SQL Server 的 GROUP BY 和 STUFF() 按 ReportId 连接电子邮件?

Barbara Streisand
发布: 2025-01-10 17:38:41
原创
969 人浏览过

How to Concatenate Emails by ReportId Using SQL Server's GROUP BY and STUFF()?

在 SQL Server 中聚合电子邮件:GROUP BY 和 STUFF() 解决方案

SQL Server 的 GROUP BY 子句对于汇总数据非常强大。 一项常见的任务是将多行的值组合成一个字符串,通常以逗号分隔。 使用 STUFF().

等函数可以有效地处理此问题

让我们用一个示例员工报告表来说明:

ID ReportId Email
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 Email
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中文网其他相关文章!

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