SQL Server 中的分組字串聚合:替換為「AGG」
SQL Server 缺少類似「AGG」的內建字串聚合函數' 在您提供的查詢中。但是,還有其他方法可以將行值連接成分組結果。
一個解法利用 FOR XML 和 STUFF 函數。 FOR XML 函數將內部查詢的結果轉換為 XML,然後可以使用 STUFF 函數處理以刪除 XML 標籤並連接字串。這是一個範例:
SELECT *, (SELECT STUFF(( SELECT ', ' + CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID FOR XML PATH('') ), 1, 1, '') as CarModels FROM CarMakes make
另一種方法是利用 COALESCE 和 ROW_NUMBER 函數。 COALESCE 函數連接非空值,而 ROW_NUMBER 函數在每個群組內分配唯一的行號。以下查詢使用此方法:
SELECT CarMakeID, CarMake, COALESCE( ( SELECT CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) = 1 ), '', COALESCE( ( SELECT ', ' + CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) > 1 ) ) ) as CarModels FROM CarMakes make
這些方法提供了在 SQL Server 中對字串進行分組和連接的替代方法,從而實現高效且可讀的資料聚合。
以上是如何在沒有'AGG”函數的情況下在 SQL Server 中實現字串聚合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!