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
Linda HamiltonOriginal
2025-01-10 17:41:41396Durchsuche

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>

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>

Nutzung der STUFF()-Funktion

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

<code class="language-sql">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</code>

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!

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