在 SQL Server 中連接行值:LISTAGG 的替代方案
SQL 中常見的字串挑戰之一是跨行聚合字串值。在這種情況下,LISTAGG 是許多資料庫系統都支援的便利功能。但是,在 SQL Server 中,沒有與 LISTAGG 直接等效的函數。
要在 SQL Server 中實作類似的功能,一種方法是在主查詢中使用子查詢。然而,如下所示的傳統方法有一個潛在的缺點:
SELECT *, (SELECT AGG(CarModel) FROM CarModels model WHERE model.CarMakeID = make.CarMakeID GROUP BY make.CarMakeID) as CarMakes FROM CarMakes make
在此查詢中,AGG 可以替換為STRING_AGG 和GROUP_CONCAT 函數的組合:
SELECT *, (SELECT STRING_AGG(CarModel, ', ') FROM CarModels model WHERE model.CarMakeID = make.CarMakeID GROUP BY make.CarMakeID) as CarMakes FROM CarMakes make
此修改後來的查詢為連接SQL Server 中的行值提供了強大的解決方案。然而,值得注意的是,這種方法的性能特徵可能會根據資料集的大小和複雜性而變化。
以上是如何在不使用 LISTAGG 的情況下有效連接 SQL Server 中的行值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!