首頁 > 資料庫 > mysql教程 > 如何使用 FOR XML PATH 在 SQL Server 中聚合和逗號分隔值?

如何使用 FOR XML PATH 在 SQL Server 中聚合和逗號分隔值?

Patricia Arquette
發布: 2025-01-07 21:19:40
原創
885 人瀏覽過

How to Aggregate and Comma-Separate Values in SQL Server Using FOR XML PATH?

SQL Server:在聚合期間用逗號連線值

在 SQL Server 中,您通常需要按特定列對資料進行分組,然後將相關值組合成單一逗號分隔的字串。 讓我們用一個例子來說明這一點。 想像一個名為 YourTable 的表,其中包含 IDValue 列:

<code>ID   |  Value
-------|--------
1    |   a
1    |   b
2    |   c</code>
登入後複製

目標是產生一個結果集,其中每個唯一的 ID 都有其關聯的 Value 條目的相應逗號分隔字串。 我們可以使用 FOR XML PATH 方法來實現這一點:

<code class="language-sql">SELECT 
    ID, 
    STUFF((SELECT ', ' + Value
           FROM YourTable t2
           WHERE t1.ID = t2.ID
           FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS Values
FROM YourTable t1
GROUP BY ID;</code>
登入後複製

此查詢的工作原理如下:

  1. 外部 SELECT: 這將選擇 ID 欄位並準備聚合。
  2. 內部 SELECT: 這將從外部查詢中擷取與目前 Value 相符的所有 ID 項目。 ', ' Value 在每個值之前加上逗號和空格。
  3. FOR XML PATH(''): 這會將內部查詢的結果轉換為 XML 字串,從而有效地連接值。 空字串 '' 會阻止產生 XML 標籤。
  4. .value('.', 'NVARCHAR(MAX)'): 這將從 XML 中提取連接的字串。
  5. STUFF(..., 1, 2, ''): 這將從連接的字串中刪除前導「,」。

最終輸出將是:

<code>ID   |  Values
-------|--------
1    |   a, b
2    |   c</code>
登入後複製

此技術提供了一種簡潔有效的方法來在 SQL Server 中執行逗號分隔聚合。

以上是如何使用 FOR XML PATH 在 SQL Server 中聚合和逗號分隔值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板