Kombinieren mehrerer SQL Server-Zeilen in einer einzigen durch Kommas getrennten Spalte
Diese Anleitung zeigt, wie Sie mehrere Zeilen in einer einzigen Spalte mit durch Kommas getrennten Werten in SQL Server zusammenführen. Verwenden wir diesen Beispieldatensatz:
<code class="language-sql">[TicketID], [Person] T0001 Alice T0001 Bob T0002 Catherine T0002 Doug T0003 Elaine</code>
Unser Ziel ist es, diesen Output zu erreichen:
<code class="language-sql">[TicketID], [People] T0001 Alice, Bob T0002 Catherine, Doug T0003 Elaine</code>
Lösung (SQL Server 2005 und höher):
Die folgende SQL-Abfrage nutzt die Funktion STUFF
, um die Werte effizient zu verketten:
<code class="language-sql">SELECT t.TicketID, STUFF(ISNULL((SELECT ', ' + x.Person FROM @Tickets x WHERE x.TicketID = t.TicketID GROUP BY x.Person FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), ''), 1, 2, '') AS People FROM @Tickets t GROUP BY t.TicketID;</code>
Erklärung:
STUFF
ersetzt einen Teil einer Zeichenfolge durch eine andere Zeichenfolge. Hier wird das führende Komma entfernt.FOR XML PATH
-Klausel erstellt eine XML-Darstellung der Daten, die dann mit .value('.','VARCHAR(max)')
in eine durch Kommas getrennte Zeichenfolge konvertiert wird. Dies ist eine gängige Technik für die String-Aggregation in SQL Server.ISNULL
behandelt Fälle, in denen ein TicketID
nur eine zugeordnete Person hat, um Fehler zu vermeiden.Diese Methode bietet eine präzise und effektive Lösung zum Verketten mehrerer Zeilen in einer einzigen durch Kommas getrennten Spalte in SQL Server. Denken Sie daran, @Tickets
durch Ihren tatsächlichen Tabellennamen zu ersetzen.
Das obige ist der detaillierte Inhalt vonWie verkette ich mehrere Zeilen in einer einzigen durch Kommas getrennten Spalte in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!