Heim > Datenbank > MySQL-Tutorial > Wie verkette ich E-Mails nach Berichts-ID mithilfe der GROUP BY-Klausel von SQL Server?

Wie verkette ich E-Mails nach Berichts-ID mithilfe der GROUP BY-Klausel von SQL Server?

Linda Hamilton
Freigeben: 2025-01-10 17:41:41
Original
406 Leute haben es durchsucht

How to Concatenate Emails by Report ID Using SQL Server's GROUP BY Clause?

SQL Server: Verketten von E-Mails innerhalb von Berichts-ID-Gruppen mithilfe von GROUP BY

In SQL Server ist das effiziente Gruppieren von Daten und das Kombinieren verwandter Werte in einzelnen Zeichenfolgen eine häufige Aufgabe. Die GROUP BY-Klausel gruppiert Zeilen basierend auf angegebenen Spalten und ermöglicht so die Verwendung von Aggregatfunktionen für Datenmanipulation und Berechnungen.

E-Mails nach Berichts-ID kombinieren

Stellen Sie sich eine Tabelle vor, die so aufgebaut ist:

<code>ID    ReportId     Email
1     1            [email protected]
2     2            [email protected]
3     1            [email protected]
4     3            [email protected]
5     3            [email protected]</code>
Nach dem Login kopieren

Das Ziel besteht darin, Zeilen nach ReportId zu gruppieren und entsprechende E-Mails in durch Kommas getrennte Zeichenfolgen zu verketten. Die gewünschte Ausgabe:

<code>ReportId     Email
1            [email protected], [email protected]
2            [email protected]
3            [email protected], [email protected]</code>
Nach dem Login kopieren

Nutzung der STUFF()-Funktion

Dies wird effektiv mit der Funktion STUFF() innerhalb einer Unterabfrage erreicht:

SELECT ReportId, Email = 
    STUFF((SELECT ', ' + Email
           FROM your_table b 
           WHERE b.ReportId = a.ReportId 
          FOR XML PATH('')), 1, 2, '')
FROM your_table a
GROUP BY ReportId
Nach dem Login kopieren

Detaillierte Erklärung:

  • Die innere Unterabfrage wählt alle E-Mails für jedes ReportId aus und stellt jeder E-Mail ein Komma und ein Leerzeichen voran.
  • FOR XML PATH('') wandelt die Unterabfrageergebnisse in eine einzelne XML-Zeichenfolge um.
  • STUFF() entfernt das führende Komma und das Leerzeichen aus der XML-Zeichenfolge, wodurch die gewünschte durch Kommas getrennte E-Mail-Liste entsteht.

Weitere Überlegungen:

  • Andere Aggregatfunktionen (z. B. SUM(), AVG()) können mit GROUP BY für verschiedene Berechnungen für gruppierte Daten verwendet werden.
  • STUFF() ist eine äußerst vielseitige Funktion für verschiedene String-Manipulationsoperationen.

Das obige ist der detaillierte Inhalt vonWie verkette ich E-Mails nach Berichts-ID mithilfe der GROUP BY-Klausel von SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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