首頁 > 資料庫 > mysql教程 > 如何使用SQL Server的STRING_AGG函數進行分組字串聚合?

如何使用SQL Server的STRING_AGG函數進行分組字串聚合?

Linda Hamilton
發布: 2024-12-23 20:38:15
原創
836 人瀏覽過

How Can SQL Server's STRING_AGG Function Be Used for Grouped String Aggregation?

分組字串聚合:SQL Server 中的LISTAGG 函數

SQL Server 中的字串聚合提供了一種將多個字符串值組合成單一串聯值的方法細繩。處理分組資料時,此功能在產生以逗號分隔的不同值清單等場景中至關重要。

考慮以下架構,我們希望在其中聚合每個汽車品牌中的汽車模型:

| CarMakeID | CarMake
------------------------
| 1 | SuperCars
| 2 | MehCars

| CarMakeID | CarModelID | CarModel
-----------------------------------------
| 1 | 1 | Zoom
| 2 | 1 | Wow
| 3 | 1 | Awesome
| 4 | 2 | Mediocrity
| 5 | 2 | YoureSettling
登入後複製

我們想要的輸出是:

| CarMakeID | CarMake | CarModels
---------------------------------------------
| 1 | SuperCars | Zoom, Wow, Awesome
| 2 | MehCars | Mediocrity, YoureSettling
登入後複製

為了實現這種聚合,SQL Server 提供了幾個選項。但是,建議的字串連接方法是使用 STRING_AGG 函數。

以下修改後的查詢使用STRING_AGG 函數代替初始查詢中的AGG:

SELECT *, 
(SELECT STRING_AGG(CarModel, ', ') AS CarModels
  FROM CarModels model
  WHERE model.CarMakeID = make.CarMakeID
  GROUP BY make.CarMakeID)
FROM CarMakes make
登入後複製

STRING_AGG 函數是內建聚合函數,它採用列值並將所有不同的值連接到一個字串中。可選的 SEPARATOR 參數允許我們指定值之間的分隔符,在本例中,我們選擇了逗號。

此查詢將產生所需的輸出,其中 CarModels 欄位包含以逗號分隔的汽車清單每個品牌的型號。

以上是如何使用SQL Server的STRING_AGG函數進行分組字串聚合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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