Heim >Datenbank >MySQL-Tutorial >Wie führe ich eine gruppierte String-Aggregation in SQL Server ohne LISTAGG durch?

Wie führe ich eine gruppierte String-Aggregation in SQL Server ohne LISTAGG durch?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-29 01:48:10811Durchsuche

How to Perform Grouped String Aggregation in SQL Server Without LISTAGG?

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!

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