首页 > 数据库 > mysql教程 > 如何在 SQL Server 中使用 STRING_AGG 连接不同的值?

如何在 SQL Server 中使用 STRING_AGG 连接不同的值?

Patricia Arquette
发布: 2025-01-24 07:07:08
原创
915 人浏览过

How to Concatenate Distinct Values Using STRING_AGG in SQL Server?

在 SQL Server 中使用 STRING_AGG 进行不同值串联:一种实用方法

SQL Server 的 STRING_AGG 函数简化了将多个值连接成单个字符串的过程。 但是,使用 STRING_AGG 直接实现不同值串联需要一种解决方法。本文概述了使用 STRING_AGG 计算和连接不同值的两步过程,即使对于大型数据集也是如此。

解决方案:

此方法使用两阶段 GROUP BY 方法:

  1. 消除重复:第一个 GROUP BY 操作会删除重复的行,确保只考虑指定列的唯一组合。

    <code class="language-sql">WITH Sitings AS (
     SELECT * FROM (VALUES
         (1, 'Florida', 'Orlando', 'bird'),
         (2, 'Florida', 'Orlando', 'dog'),
         (3, 'Arizona', 'Phoenix', 'bird'),
         (4, 'Arizona', 'Phoenix', 'dog'),
         (5, 'Arizona', 'Phoenix', 'bird'),
         (6, 'Arizona', 'Phoenix', 'bird'),
         (7, 'Arizona', 'Phoenix', 'bird'),
         (8, 'Arizona', 'Flagstaff', 'dog')
     ) F (ID, State, City, Siting)
    )</code>
    登录后复制
  2. 聚合和连接: 第二个 GROUP BY 计算不同计数并使用 STRING_AGG 连接唯一值。

    <code class="language-sql">SELECT
     State,
     City,
     COUNT(1) AS [# Of Sitings],
     STRING_AGG(Siting, ',') AS Animals
    FROM (
     SELECT DISTINCT
         State,
         City,
         Siting
     FROM Sitings
    ) AS CTE_Animals
    GROUP BY
     State,
     City;</code>
    登录后复制

结果输出:

查询生成一个总结不同计数和连接值的表:

State City # Of Sitings Animals
Arizona Flagstaff 1 dog
Arizona Phoenix 2 bird,dog
Florida Orlando 2 bird,dog

即使在处理大量数据集时,这种高效的技术也能确保准确的不同值串联和计数。 这种方法有效地复制了 COUNT(DISTINCT <column>) 的功能,同时还提供了连接字符串。

以上是如何在 SQL Server 中使用 STRING_AGG 连接不同的值?的详细内容。更多信息请关注PHP中文网其他相关文章!

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