SQL Server:使用 GROUP BY 连接报告 ID 组内的电子邮件
在 SQL Server 中,有效地对数据进行分组并将相关值组合成单个字符串是一项常见任务。 GROUP BY
子句根据指定的列对行进行分组,从而允许使用聚合函数进行数据操作和计算。
按报告 ID 组合电子邮件
想象一个这样结构的表格:
<code>ID ReportId Email 1 1 [email protected] 2 2 [email protected] 3 1 [email protected] 4 3 [email protected] 5 3 [email protected]</code>
目标是按 ReportId
对行进行分组,并将相应的电子邮件连接成逗号分隔的字符串。 所需的输出:
<code>ReportId Email 1 [email protected], [email protected] 2 [email protected] 3 [email protected], [email protected]</code>
利用 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>
详细说明:
ReportId
的所有电子邮件,并在每封电子邮件前面添加逗号和空格。FOR XML PATH('')
将子查询结果转换为单个 XML 字符串。STUFF()
从 XML 字符串中删除前导逗号和空格,从而得到所需的逗号分隔电子邮件列表。进一步考虑:
SUM()
、AVG()
)可以与GROUP BY
一起使用,对分组数据进行各种计算。STUFF()
是一个高度通用的函数,用于各种字符串操作操作。以上是如何使用 SQL Server 的 GROUP BY 子句按报告 ID 连接电子邮件?的详细内容。更多信息请关注PHP中文网其他相关文章!