Heim > Datenbank > MySQL-Tutorial > Wie verkette ich E-Mails nach ReportId mithilfe von GROUP BY und STUFF() von SQL Server?

Wie verkette ich E-Mails nach ReportId mithilfe von GROUP BY und STUFF() von SQL Server?

Barbara Streisand
Freigeben: 2025-01-10 17:38:41
Original
968 Leute haben es durchsucht

How to Concatenate Emails by ReportId Using SQL Server's GROUP BY and STUFF()?

E-Mails in SQL Server aggregieren: Eine GROUP BY- und STUFF()-Lösung

Die GROUP BY-Klausel von SQL Server eignet sich hervorragend zum Zusammenfassen von Daten. Eine häufige Aufgabe besteht darin, die Werte mehrerer Zeilen zu einer einzigen Zeichenfolge zusammenzufassen, oft durch Kommas getrennt. Dies wird mithilfe von Funktionen wie STUFF().

effizient erledigt

Lassen Sie uns dies anhand einer Beispieltabelle für einen Mitarbeiterbericht veranschaulichen:

ID ReportId Email
1 1 john@example.com
2 2 mary@example.com
3 1 jane@example.com
4 3 david@example.com
5 3 susan@example.com

Um mit jedem ReportId verknüpfte E-Mails zu verketten und Kommas als Trennzeichen zu verwenden, funktioniert diese Abfrage:

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

Die Funktion STUFF() ändert eine Zeichenfolge. Es werden vier Argumente benötigt: die Zeichenfolge, die Startposition, die Anzahl der zu entfernenden Zeichen und die Ersatzzeichenfolge.

Die äußere Abfrage gruppiert nach ReportId. Die innere Abfrage unter Verwendung von FOR XML PATH('') verkettet E-Mails für jede Gruppe. STUFF() entfernt dann das führende Komma und das Leerzeichen.

Die Ausgabe der Abfrage:

ReportId Email
1 john@example.com, jane@example.com
2 mary@example.com
3 david@example.com, susan@example.com

Das obige ist der detaillierte Inhalt vonWie verkette ich E-Mails nach ReportId mithilfe von GROUP BY und STUFF() von 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage