Heim >Datenbank >MySQL-Tutorial >Wie verkette ich mehrere Zeilen in einer einzigen durch Kommas getrennten Spalte in SQL Server?

Wie verkette ich mehrere Zeilen in einer einzigen durch Kommas getrennten Spalte in SQL Server?

DDD
DDDOriginal
2025-01-21 06:57:16354Durchsuche

How to Concatenate Multiple Rows into a Single Comma-Separated Column in SQL Server?

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:

  • Diese Lösung ist mit SQL Server 2005 und späteren Versionen kompatibel.
  • Die Funktion STUFF ersetzt einen Teil einer Zeichenfolge durch eine andere Zeichenfolge. Hier wird das führende Komma entfernt.
  • Die 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!

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