Heim >Datenbank >MySQL-Tutorial >Wie aggregiere und durch Kommas getrennte Werte in SQL Server mithilfe von 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
:
<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:
SELECT
: Dies wählt die Spalte ID
aus und bereitet die Aggregation vor.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.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..value('.', 'NVARCHAR(MAX)')
: Dadurch wird die verkettete Zeichenfolge aus dem XML extrahiert.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!