Heim >Datenbank >MySQL-Tutorial >Wie aggregiere und durch Kommas getrennte Werte in SQL Server mithilfe von FOR XML PATH?

Wie aggregiere und durch Kommas getrennte Werte in SQL Server mithilfe von FOR XML PATH?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-07 21:19:40901Durchsuche

How to Aggregate and Comma-Separate Values in SQL Server Using FOR XML PATH?

SQL Server: Verketten von Werten mit Kommas während der Aggregation

In SQL Server müssen Sie häufig Daten nach einer bestimmten Spalte gruppieren und dann verwandte Werte in einer einzigen durch Kommas getrennten Zeichenfolge kombinieren. Lassen Sie uns dies anhand eines Beispiels veranschaulichen. Stellen Sie sich eine Tabelle mit dem Namen YourTable mit den Spalten ID und Value:

vor
<code>ID   |  Value
-------|--------
1    |   a
1    |   b
2    |   c</code>

Das Ziel besteht darin, eine Ergebnismenge zu generieren, in der jeder eindeutige ID eine entsprechende durch Kommas getrennte Zeichenfolge der zugehörigen Value-Einträge hat. Dies erreichen wir mit der FOR XML PATH-Methode:

<code class="language-sql">SELECT 
    ID, 
    STUFF((SELECT ', ' + Value
           FROM YourTable t2
           WHERE t1.ID = t2.ID
           FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS Values
FROM YourTable t1
GROUP BY ID;</code>

Diese Abfrage funktioniert wie folgt:

  1. Äußeres SELECT: Dies wählt die Spalte ID aus und bereitet die Aggregation vor.
  2. Inneres SELECT: Dies ruft alle Value-Einträge ab, die mit dem aktuellen ID aus der äußeren Abfrage übereinstimmen. Das ', ' Value fügt vor jedem Wert ein Komma und ein Leerzeichen ein.
  3. FOR XML PATH(''): Dadurch wird das Ergebnis der inneren Abfrage in eine XML-Zeichenfolge konvertiert, wodurch die Werte effektiv verkettet werden. Die leere Zeichenfolge '' verhindert die Generierung von XML-Tags.
  4. .value('.', 'NVARCHAR(MAX)'): Dadurch wird die verkettete Zeichenfolge aus dem XML extrahiert.
  5. STUFF(..., 1, 2, ''): Dadurch wird das führende „,“ aus der verketteten Zeichenfolge entfernt.

Die endgültige Ausgabe lautet:

<code>ID   |  Values
-------|--------
1    |   a, b
2    |   c</code>

Diese Technik bietet eine präzise und effiziente Möglichkeit, eine durch Kommas getrennte Aggregation in SQL Server durchzuführen.

Das obige ist der detaillierte Inhalt vonWie aggregiere und durch Kommas getrennte Werte in SQL Server mithilfe von FOR XML PATH?. 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