Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine String-Aggregation in SQL Server wie die LISTAGG-Funktion von Oracle erreichen?
Gruppierte String-Aggregation in SQL Server: Eine LISTAGG-Alternative finden
In SQL Server kann die String-Aggregation eine Herausforderung sein. Bei einer Tabellenstruktur, die Automarken und -modelle auflistet, möchten Sie möglicherweise einen Datensatz erstellen, der Automodelle nach Marke gruppiert und ihre Werte in einer einzigen Spalte verkettet, ähnlich der LISTAGG-Funktion in Oracle.
Um dies zu erreichen In SQL Server können Sie die FOR XML PATH-Methode verwenden. Betrachten Sie die folgende Abfrage:
SELECT CarMakeID, CarMake, (SELECT ModelNames.ModelNames FROM (SELECT DISTINCT CarModel AS ModelNames FROM CarModels WHERE CarMakeID = make.CarMakeID FOR XML PATH('') ) AS ModelNames ) AS CarModels FROM CarMakes make
Die Unterabfrage (SELECT ModelNames.ModelNames... verkettet die unterschiedlichen Modellnamen für jede Automarke mithilfe der FOR XML PATH('')-Methode. Dadurch wird eine durch Kommas getrennte Abfrage generiert Liste der Modelle, die dann der Spalte CarModels in der äußeren Abfrage zugewiesen wird.
Indem Sie AGG(CarModel) in Ihrer ursprünglichen Abfrage durch die beschriebene Unterabfrage ersetzen oben können Sie die gewünschte Gruppierung und Zeichenfolgenaggregation in SQL Server erreichen.
Das obige ist der detaillierte Inhalt vonWie kann ich eine String-Aggregation in SQL Server wie die LISTAGG-Funktion von Oracle erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!