使用 SQL Server 2017 的 STRING_AGG 函數產生唯一值
SQL Server 2017 中的 STRING_AGG
函數不直接支援不同值。 然而,使用兩步驟方法可以獲得獨特的總結結果。 此方法避免了 STRING_AGG(DISTINCT column, ',')
.
此解決方案涉及公共表表達式(CTE)來預處理資料。 CTE 將資料分組,以在最終聚合之前消除重複項。
下面的範例示範了這種技巧。 初始 Sitings
CTE 提供樣本資料。然後,CTE_Animals
CTE 按 State
、City
和 Siting
進行分組以刪除冗餘條目。然後,主查詢使用 STRING_AGG
連接每個 Siting
和 State
組合的唯一 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中文網其他相關文章!