SQL Server 清單聚合詳解
關聯式資料庫操作中,資料聚合是將多筆記錄資訊整合為有意義的摘要的關鍵步驟。清單聚合就是其中一種聚合方法,它將多個值連接成單一分隔清單。
SQL Server 本身並不會直接提供類似 Oracle 的 LISTAGG 函數。但是,可以透過幾種技術實現相同的功能。
方法一:STRING_AGG (SQL Server 2017 以上版本)
對於 SQL Server 2017 及更高版本,STRING_AGG 函數提供了一個簡潔的列表聚合解決方案:
<code class="language-sql">SELECT FieldA , STRING_AGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs FROM TableName GROUP BY FieldA ORDER BY FieldA;</code>
方法二:遞迴 CTE (SQL Server 2016 及以下版本)
在早期版本的 SQL Server 中,可以使用遞歸公用表格運算式 (CTE) 來實現清單聚合:
<code class="language-sql"> WITH CTE_TableName AS ( SELECT FieldA, FieldB FROM TableName) SELECT t0.FieldA , STUFF(( SELECT ',' + t1.FieldB FROM CTE_TableName t1 WHERE t1.FieldA = t0.FieldA ORDER BY t1.FieldB FOR XML PATH('')), 1, LEN(','), '') AS FieldBs FROM CTE_TableName t0 GROUP BY t0.FieldA ORDER BY FieldA;</code>
其他資料庫的相容性
對於 SQL Server 以外的資料庫系統,可以使用以下替代方法:
總結
雖然 SQL Server 沒有原生的 LISTAGG 函數,但可以透過多種方法實現類似的功能。根據所使用的 SQL Server 版本,這些方法為將字串資料聚合到分隔清單中提供了靈活的選擇。
以上是如何在SQL Server中進行清單聚合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!