Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan E-mel oleh ReportId Menggunakan SQL Server GROUP BY dan STUFF()?

Bagaimana untuk Menggabungkan E-mel oleh ReportId Menggunakan SQL Server GROUP BY dan STUFF()?

Barbara Streisand
Barbara Streisandasal
2025-01-10 17:38:411009semak imbas

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

Mengagregatkan E-mel dalam Pelayan SQL: Penyelesaian KUMPULAN OLEH dan STUFF()

Klausa

SQL Server GROUP BY berkuasa untuk meringkaskan data. Tugas yang kerap adalah menggabungkan nilai berbilang baris ke dalam satu rentetan, selalunya dipisahkan koma. Ini dikendalikan dengan cekap menggunakan fungsi seperti STUFF().

Mari kita ilustrasikan dengan contoh jadual laporan pekerja:

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

Untuk menggabungkan e-mel yang dikaitkan dengan setiap ReportId, menggunakan koma sebagai pemisah, pertanyaan ini berfungsi:

<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>

Fungsi STUFF() mengubah suai rentetan. Ia memerlukan empat argumen: rentetan, kedudukan permulaan, bilangan aksara untuk dialih keluar dan rentetan gantian.

Kumpulan pertanyaan luar oleh ReportId. Pertanyaan dalaman, menggunakan FOR XML PATH(''), menggabungkan e-mel untuk setiap kumpulan. STUFF() kemudian mengalih keluar koma dan ruang di hadapan.

Keluaran pertanyaan:

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

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan E-mel oleh ReportId Menggunakan SQL Server GROUP BY dan STUFF()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn