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

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

Patricia Arquette
发布: 2025-01-07 21:19:40
原创
885 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板