首頁 > 資料庫 > mysql教程 > 如何在SQL Server中進行清單聚合?

如何在SQL Server中進行清單聚合?

DDD
發布: 2025-01-22 13:17:09
原創
595 人瀏覽過

How to Perform List Aggregation in SQL Server?

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 以外的資料庫系統,可以使用以下替代方法:

  • MySQL:GROUP_CONCAT
  • Oracle 和 DB2:LISTAGG
  • PostgreSQL:STRING_AGG

總結

雖然 SQL Server 沒有原生的 LISTAGG 函數,但可以透過多種方法實現類似的功能。根據所使用的 SQL Server 版本,這些方法為將字串資料聚合到分隔清單中提供了靈活的選擇。

以上是如何在SQL Server中進行清單聚合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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