Heim > Datenbank > MySQL-Tutorial > Wie kann ich mithilfe von GROUP BY in SQL Server mehrere Werte zu einer durch Kommas getrennten Zeichenfolge verketten?

Wie kann ich mithilfe von GROUP BY in SQL Server mehrere Werte zu einer durch Kommas getrennten Zeichenfolge verketten?

Mary-Kate Olsen
Freigeben: 2025-01-10 17:37:45
Original
226 Leute haben es durchsucht

How Can I Concatenate Multiple Values into a Comma-Separated String Using GROUP BY in SQL Server?

Aggregieren von Daten mit durch Kommas getrennten Zeichenfolgen in SQL Server

Die GROUP BY-Klausel von SQL Server eignet sich hervorragend für die Datenaggregation. Aber wie kombiniert man mehrere Werte aus gruppierten Zeilen in einer einzigen, durch Kommas getrennten Zeichenfolge?

Die Herausforderung:

Stellen Sie sich einen Tisch wie diesen vor:

<code>ID    ReportId     Email
1     1            a@domain.com
2     2            b@domain.com
3     1            c@domain.com
4     3            d@domain.com
5     3            e@domain.com</code>
Nach dem Login kopieren

Das Ziel besteht darin, die E-Mails nach ReportId zu gruppieren und für jeden Bericht in einer durch Kommas getrennten Liste zu verketten.

Lösung: Unterabfrage und FOR XML PATH

So erreichen Sie dies mit einer Unterabfrage und der Methode FOR XML PATH:

<code class="language-sql">SELECT ReportId, Email = 
    STUFF((SELECT ', ' + Email
           FROM table_name b 
           WHERE b.ReportId = a.ReportId 
          FOR XML PATH('')), 1, 2, '')
FROM table_name a
GROUP BY ReportId;</code>
Nach dem Login kopieren

Erklärung:

  • Unterabfrage: Die innere SELECT-Anweisung ruft alle E-Mails ab, die mit einem bestimmten ReportId verknüpft sind.
  • FOR XML PATH(''): Diese Funktion wandelt die E-Mail-Ergebnisse in eine XML-Zeichenfolge um, wobei jede E-Mail ein separater Knoten ist. Das '' stellt sicher, dass kein übergeordneter Knoten erstellt wird.
  • STUFF: Die Funktion STUFF entfernt das durch die Anweisung SELECT hinzugefügte führende Komma und Leerzeichen, was zu einer sauberen, durch Kommas getrennten Zeichenfolge führt.

Ergebnis:

Die Abfrage erzeugt die folgende Ausgabe:

<code>ReportId     Email
1            a@domain.com, c@domain.com
2            b@domain.com
3            d@domain.com, e@domain.com</code>
Nach dem Login kopieren

Dadurch werden mehrere E-Mail-Adressen effektiv in einer einzigen durch Kommas getrennten Zeichenfolge für jede ReportId zusammengefasst. Obwohl dieser Ansatz gut funktioniert, sollten Sie für potenziell effizientere Lösungen die Erkundung anderer datenbankspezifischer Funktionen wie STRING_AGG (verfügbar in späteren SQL Server-Versionen) in Betracht ziehen.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von GROUP BY in SQL Server mehrere Werte zu einer durch Kommas getrennten Zeichenfolge verketten?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage