首页 > 数据库 > mysql教程 > 如何在 SQL Server 2017 中使用 STRING_AGG 获得不同的结果?

如何在 SQL Server 2017 中使用 STRING_AGG 获得不同的结果?

Susan Sarandon
发布: 2025-01-24 06:46:10
原创
802 人浏览过

How Can I Get Distinct Results Using STRING_AGG in SQL Server 2017?

使用 SQL Server 2017 的 STRING_AGG 函数生成唯一值

SQL Server 2017 中的 STRING_AGG 函数不直接支持不同值。 然而,使用两步方法可以获得独特的汇总结果。 此方法避免了 STRING_AGG(DISTINCT column, ',').

的无效语法

该解决方案涉及公共表表达式(CTE)来预处理数据。 CTE 对数据进行分组,以在最终聚合之前消除重复项。

下面的示例演示了这种技术。 初始 Sitings CTE 提供样本数据。然后,CTE_Animals CTE 按 StateCitySiting 进行分组以删除冗余条目。然后,主查询使用 STRING_AGG 连接每个 SitingState 组合的唯一 City 值。

<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)
)
,CTE_Animals
AS
(
    SELECT
        State, City, Siting
    FROM Sitings
    GROUP BY State, City, Siting
)
SELECT
    State, City, COUNT(*) AS [# Of Sitings], STRING_AGG(Siting,',') AS Animals
FROM CTE_Animals
GROUP BY State, City
ORDER BY
    State, City;</code>
登录后复制

此方法保证最终的 Animals 列仅包含每个位置的唯一动物目击事件,而 # Of Sitings 列反映了不同的计数。 ORDER BY 子句确保一致且可预测的输出顺序。

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

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