首页 >数据库 >mysql教程 >如何使用 FOR XML PATH 在 SQL Server 中聚合和逗号分隔值?

如何使用 FOR XML PATH 在 SQL Server 中聚合和逗号分隔值?

Patricia Arquette
Patricia Arquette原创
2025-01-07 21:19:40937浏览

How to Aggregate and Comma-Separate Values in SQL Server Using FOR XML PATH?

SQL Server:在聚合期间用逗号连接值

在 SQL Server 中,您通常需要按特定列对数据进行分组,然后将相关值组合成单个逗号分隔的字符串。 让我们用一个例子来说明这一点。 想象一个名为 YourTable 的表,其中包含 IDValue 列:

<code>ID   |  Value
-------|--------
1    |   a
1    |   b
2    |   c</code>

目标是生成一个结果集,其中每个唯一的 ID 都有其关联的 Value 条目的相应逗号分隔字符串。 我们可以使用 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>

此查询的工作原理如下:

  1. 外部 SELECT: 这将选择 ID 列并准备聚合。
  2. 内部 SELECT: 这将从外部查询中检索与当前 Value 匹配的所有 ID 条目。 ', ' Value 在每个值之前添加逗号和空格。
  3. FOR XML PATH(''): 这会将内部查询的结果转换为 XML 字符串,从而有效地连接值。 空字符串 '' 会阻止生成 XML 标签。
  4. .value('.', 'NVARCHAR(MAX)'): 这将从 XML 中提取连接的字符串。
  5. STUFF(..., 1, 2, ''): 这将从连接的字符串中删除前导“,”。

最终输出将是:

<code>ID   |  Values
-------|--------
1    |   a, b
2    |   c</code>

此技术提供了一种简洁有效的方法来在 SQL Server 中执行逗号分隔聚合。

以上是如何使用 FOR XML PATH 在 SQL Server 中聚合和逗号分隔值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn