使用 GROUP BY 在 SQL 中生成逗号分隔的聚合数据
本指南解释了如何在 SQL 中有效聚合数据,将结果输出为按特定列分组的逗号分隔列表。 这是一个常见的 SQL 任务,有多种解决方案。
挑战
想象一个这样结构的表格:
ID | Value |
---|---|
1 | a |
1 | b |
2 | c |
目标是合并这些数据,按 ID
列分组,并将相应的 Value
条目连接到每个组的单个逗号分隔字符串中。
解决方案:利用 FOR XML PATH
一个强大而简洁的方法利用 FOR XML PATH
构造:
<code class="language-sql">SELECT ID, STUFF((SELECT ', ' + Value FROM YourTable t2 WHERE t1.ID = t2.ID FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS Values FROM YourTable t1 GROUP BY ID;</code>
此查询使用带有 FOR XML PATH('')
的子查询来生成连接值的 XML 表示形式。 .value('.', 'NVARCHAR(MAX)')
方法将其提取为字符串。 最后,STUFF
删除前导逗号和空格。
进一步探索
有关更高级的场景和替代方法,请探索以下相关资源:
通过使用 FOR XML PATH
方法或探索其他 SQL 技术,您可以有效地聚合并以用户友好的逗号分隔格式呈现数据。
以上是如何使用 GROUP BY 检索以逗号分隔的聚合 SQL 结果?的详细内容。更多信息请关注PHP中文网其他相关文章!