首頁 >資料庫 >mysql教程 >如何在沒有'AGG”函數的情況下在 SQL Server 中實現字串聚合?

如何在沒有'AGG”函數的情況下在 SQL Server 中實現字串聚合?

Susan Sarandon
Susan Sarandon原創
2024-12-26 11:13:16847瀏覽

How Can I Achieve String Aggregation in SQL Server Without an 'AGG' Function?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn