在 SQL Server 中使用 STRING_AGG 进行不同值串联:一种实用方法
SQL Server 的 STRING_AGG 函数简化了将多个值连接成单个字符串的过程。 但是,使用 STRING_AGG 直接实现不同值串联需要一种解决方法。本文概述了使用 STRING_AGG 计算和连接不同值的两步过程,即使对于大型数据集也是如此。
解决方案:
此方法使用两阶段 GROUP BY 方法:
消除重复:第一个 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>
聚合和连接: 第二个 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中文网其他相关文章!