首頁 > 資料庫 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板