SQL Server:在聚合期間用逗號連線值
在 SQL Server 中,您通常需要按特定列對資料進行分組,然後將相關值組合成單一逗號分隔的字串。 讓我們用一個例子來說明這一點。 想像一個名為 YourTable
的表,其中包含 ID
和 Value
列:
<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>
此查詢的工作原理如下:
SELECT
: 這將選擇 ID
欄位並準備聚合。 SELECT
: 這將從外部查詢中擷取與目前 Value
相符的所有 ID
項目。 ', ' Value
在每個值之前加上逗號和空格。 FOR XML PATH('')
: 這會將內部查詢的結果轉換為 XML 字串,從而有效地連接值。 空字串 ''
會阻止產生 XML 標籤。 .value('.', 'NVARCHAR(MAX)')
: 這將從 XML 中提取連接的字串。 STUFF(..., 1, 2, '')
: 這將從連接的字串中刪除前導「,」。 最終輸出將是:
<code>ID | Values -------|-------- 1 | a, b 2 | c</code>
此技術提供了一種簡潔有效的方法來在 SQL Server 中執行逗號分隔聚合。
以上是如何使用 FOR XML PATH 在 SQL Server 中聚合和逗號分隔值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!