使用 SQL Server 的 GROUP BY 连接逗号分隔值
SQL Server 的 GROUP BY
子句对于基于共享属性聚合数据非常有用。 但是,将多个值组合成单个逗号分隔的字符串需要稍微更高级的方法。这就是 STUFF
函数发挥作用的地方。
以下是如何使用 GROUP BY
和 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>
让我们剖析一下这个查询:
SELECT
: 这将检索 ReportId
和聚合的 Email
字符串。STUFF
函数: 这巧妙地连接电子邮件,在每个电子邮件之间插入逗号和空格。SELECT
: 此子查询检索与特定 ReportId
关联的所有电子邮件。FOR XML PATH('')
: 这会将内部查询的结果集转换为 XML 字符串,为连接提供方便的格式。WHERE
子句: 这可确保内部查询仅选择与外部查询中的 ReportId
匹配的电子邮件。将此查询应用于示例数据将产生以下结果:
ReportId | |
---|---|
1 | [email protected], [email protected] |
2 | [email protected] |
3 | [email protected], [email protected] |
该技术有效地生成逗号分隔的列表,简化了聚合数据的处理。
以上是如何使用 SQL Server 的 GROUP BY 子句聚合逗号分隔的值?的详细内容。更多信息请关注PHP中文网其他相关文章!