在 SQL Server 中使用逗号分隔符检索分组列的聚合结果
在 SQL Server 中,可以使用 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
结构为每个组(由 ID
列表示)的 Value
列生成一个逗号分隔的值列表。STUFF
函数删除聚合列表开头的 ', '。.value('.', 'NVARCHAR(MAX)')
将XML结果转换为NVARCHAR(MAX)类型,避免潜在的错误。示例数据和预期结果:
ID | Value |
---|---|
1 | a |
1 | b |
2 | c |
预期输出:
ID | Values |
---|---|
1 | a,b |
2 | c |
其他示例:
有关在 SQL Server 中使用逗号分隔结果进行分组和聚合的更多参考,请考虑以下示例:
This revised answer improves the SQL query by explicitly converting the XML output to a string using .value('.', 'NVARCHAR(MAX)')
, preventing potential errors. The explanation also remains clear and concise.
以上是如何在 SQL Server 中检索带有逗号分隔值的聚合结果?的详细内容。更多信息请关注PHP中文网其他相关文章!