Heim >Datenbank >MySQL-Tutorial >Wie führe ich eine gruppierte String-Aggregation in SQL Server ohne LISTAGG durch?
Gruppierte Zeichenfolgenaggregation in SQL Server
Bei der Arbeit mit SQL Server besteht eine häufige Aufgabe darin, Zeichenfolgenwerte aus mehreren Zeilen in einer einzigen zusammenzufassen , durch Kommas getrennte Zeichenfolge. Wenn Sie beispielsweise eine Tabelle mit Autoherstellern und -modellen haben, möchten Sie möglicherweise einen Datensatz erstellen, der Automodelle nach Automarke gruppiert.
Alternative zu LISTAGG für SQL Server
In Oracle wird diese Aufgabe normalerweise mit der LISTAGG-Funktion ausgeführt. SQL Server verfügt jedoch nicht über ein integriertes LISTAGG-Äquivalent. Stattdessen können Sie eine Kombination der Funktionen STUFF und FOR XML PATH verwenden, um das gleiche Ergebnis zu erzielen.
Die folgende Abfrage zeigt, wie Sie mit STUFF und FOR XML PATH eine gruppierte Zeichenfolgenaggregation in SQL Server erreichen:
SELECT make.CarMakeID, make.CarMake, ( SELECT STUFF( ( SELECT ',' + model.CarModel FROM CarModels WHERE model.CarMakeID = make.CarMakeID FOR XML PATH('') ), 1, 1, '' ) AS CarModels ) FROM CarMakes AS make;
In dieser Abfrage verwendet die Unterabfrage die Funktion FOR XML PATH, um die Automodelle in einer einzigen XML-Zeichenfolge zu verketten, die durch Kommas getrennt ist. Die STUFF-Funktion entfernt dann das führende Komma und gibt die verkettete Zeichenfolge als CarModels-Spalte zurück.
Das Folgende ist die Ausgabe der Abfrage:
| CarMakeID | CarMake | CarModels | |----------|---------|-----------| | 1 | SuperCars | Zoom, Wow, Awesome | | 2 | MehCars | Mediocrity, YoureSettling |
Diese Technik bietet eine einfache und effiziente Möglichkeit um eine gruppierte Zeichenfolgenaggregation in SQL Server zu erreichen, selbst in Situationen, in denen die Zeichenfolgenverkettung komplex ist oder Sonderzeichen enthält.
Das obige ist der detaillierte Inhalt vonWie führe ich eine gruppierte String-Aggregation in SQL Server ohne LISTAGG durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!