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
Freigeben: 2025-01-21 06:57:16
Original
310 Leute haben es durchsucht

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>
Nach dem Login kopieren

Unser Ziel ist es, diesen Output zu erreichen:

<code class="language-sql">[TicketID], [People]
T0001       Alice, Bob
T0002       Catherine, Doug
T0003       Elaine</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage