Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan E-mel dengan ID Laporan Menggunakan SQL Server GROUP BY Klausa?

Bagaimana untuk Menggabungkan E-mel dengan ID Laporan Menggunakan SQL Server GROUP BY Klausa?

Linda Hamilton
Linda Hamiltonasal
2025-01-10 17:41:41396semak imbas

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

SQL Server: Menggabungkan E-mel dalam Kumpulan ID Laporan Menggunakan GROUP BY

Dalam SQL Server, mengumpulkan data dengan cekap dan menggabungkan nilai yang berkaitan ke dalam rentetan tunggal adalah tugas biasa. Fasal GROUP BY mengumpulkan baris berdasarkan lajur yang ditentukan, membolehkan penggunaan fungsi agregat untuk manipulasi dan pengiraan data.

Menggabungkan E-mel mengikut ID Laporan

Bayangkan jadual berstruktur seperti ini:

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

Matlamatnya adalah untuk mengumpulkan baris dengan ReportId dan menggabungkan e-mel yang sepadan ke dalam rentetan yang dipisahkan koma. Output yang dikehendaki:

<code>ReportId     Email
1            [email protected], [email protected]
2            [email protected]
3            [email protected], [email protected]</code>

Memanfaatkan Fungsi STUFF()

Ini dicapai dengan berkesan menggunakan fungsi STUFF() dalam subkueri:

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

Penjelasan Terperinci:

  • Subkueri dalaman memilih semua e-mel untuk setiap ReportId, menambahkan setiap e-mel dengan koma dan ruang.
  • FOR XML PATH('') menukar hasil subkueri kepada satu rentetan XML.
  • STUFF() mengalih keluar koma dan ruang utama daripada rentetan XML, menghasilkan senarai e-mel yang dipisahkan koma yang dikehendaki.

Pertimbangan Lanjut:

  • Fungsi agregat lain (cth., SUM(), AVG()) boleh digunakan dengan GROUP BY untuk pelbagai pengiraan pada data terkumpul.
  • STUFF() ialah fungsi yang sangat serba boleh untuk operasi manipulasi rentetan yang pelbagai.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan E-mel dengan ID Laporan Menggunakan SQL Server GROUP BY Klausa?. 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