分組字串聚合: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中文網其他相關文章!