SQL Server 中的分組字串聚合
使用SQL Server 時,常見任務是將多行中的字串值聚合為單一字串值, 以逗號分隔的字串。例如,給定一個包含汽車製造商和型號的表,您可能需要建立一個按汽車品牌對汽車型號進行分組的資料集。
SQL Server 的 LISTAGG 的替代方案
在 Oracle 中,此任務通常使用 LISTAGG 函數來完成。但是,SQL Server 沒有內建的 LISTAGG 等效項。相反,您可以結合 STUFF 和 FOR XML PATH 函數來獲得相同的結果。
以下查詢示範如何使用STUFF 和FOR XML PATH 在SQL Server 中實現分組字串聚合:
SELECT make.CarMakeID, make.CarMake, ( SELECT STUFF( ( SELECT ',' + model.CarModel FROM CarModels WHERE model.CarMakeID = make.CarMakeID FOR XML PATH('') ), 1, 1, '' ) AS CarModels ) FROM CarMakes AS make;
在此查詢中,子查詢使用FOR XML PATH 函數將汽車模型連接到單一XML 字串中,並以逗號分隔。然後,STUFF 函數刪除前導逗號並傳回連接的字串作為 CarModels 欄位。
以下是查詢的輸出:
| CarMakeID | CarMake | CarModels | |----------|---------|-----------| | 1 | SuperCars | Zoom, Wow, Awesome | | 2 | MehCars | Mediocrity, YoureSettling |
此技術提供了一種簡單而有效的方法在SQL Server 中實現分組字串聚合,即使在字串連接複雜或包含特殊字符的情況下也是如此。
以上是如何在不使用 LISTAGG 的情況下在 SQL Server 中執行分組字串聚合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!