Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine String-Aggregation in SQL Server ohne eine „AGG'-Funktion erreichen?

Wie kann ich eine String-Aggregation in SQL Server ohne eine „AGG'-Funktion erreichen?

Susan Sarandon
Susan SarandonOriginal
2024-12-26 11:13:16849Durchsuche

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

Gruppierte String-Aggregation in SQL Server: Ersetzen für „AGG“

SQL Server fehlt eine integrierte String-Aggregationsfunktion, die „AGG“ ähnelt ' in der von Ihnen bereitgestellten Abfrage. Es gibt jedoch alternative Ansätze, Zeilenwerte zu einem gruppierten Ergebnis zu verketten.

Eine Lösung nutzt die Funktionen FOR XML und STUFF. Die FOR XML-Funktion wandelt das Ergebnis der inneren Abfrage in XML um, das dann mit der STUFF-Funktion verarbeitet werden kann, um XML-Tags zu entfernen und die Zeichenfolgen zu verketten. Hier ist ein Beispiel:

SELECT *, 
(SELECT STUFF((
    SELECT ', ' + CarModel
    FROM CarModels model
    WHERE model.CarMakeID = make.CarMakeID
    FOR XML PATH('')
), 1, 1, '') as CarModels
FROM CarMakes make

Ein anderer Ansatz nutzt die Funktionen COALESCE und ROW_NUMBER. Die Funktion COALESCE verkettet Nicht-Null-Werte, während die Funktion ROW_NUMBER eindeutige Zeilennummern innerhalb jeder Gruppe zuweist. Die folgende Abfrage verwendet diesen Ansatz:

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

Diese Ansätze bieten alternative Methoden zum Gruppieren und Verketten von Zeichenfolgen in SQL Server und ermöglichen so eine effiziente und lesbare Datenaggregation.

Das obige ist der detaillierte Inhalt vonWie kann ich eine String-Aggregation in SQL Server ohne eine „AGG'-Funktion erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn