在 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中文網其他相關文章!