Mengagregatkan Nilai Unik ke dalam Senarai Dipisahkan Koma dengan SQL Server GROUP BY
Cabaran:
Memandangkan jadual dengan entri pendua, matlamatnya adalah untuk mengumpulkan data mengikut lajur tertentu dan menyatukan nilai unik daripada lajur lain ke dalam rentetan tunggal yang dipisahkan koma.
Data Contoh:
Jadual berikut menggambarkan set data awal:
ID | ReportId | |
---|---|---|
1 | 1 | [email protected] |
2 | 2 | [email protected] |
3 | 1 | [email protected] |
4 | 3 | [email protected] |
5 | 3 | [email protected] |
Hasil Sasaran:
Hasil yang diingini ialah jadual dengan alamat e-mel yang disatukan:
ReportId | |
---|---|
1 | [email protected], [email protected] |
2 | [email protected] |
3 | [email protected], [email protected] |
Penyelesaian menggunakan GROUP BY dan STUFF:
Fungsi STUFF
digunakan untuk menggabungkan rentetan dengan cekap, mengalih keluar aksara utama. Penyelesaiannya adalah seperti berikut:
<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:
Logik teras melibatkan subkueri dalam fungsi STUFF
. Subkueri ini berulang melalui semua baris yang berkongsi ReportId
yang sama seperti baris pertanyaan luar semasa. Untuk setiap baris yang sepadan, ia menambahkan koma dan nilai Email
pada rentetan terkumpul. Pertanyaan luar kemudian menggunakan GROUP BY
untuk mengagregatkan rentetan e-mel yang digabungkan ini untuk setiap ReportId
unik. Fungsi STUFF
mengalih keluar koma dan ruang awal.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Nilai Unik ke dalam Rentetan Dipisahkan Koma Menggunakan SQL Server GROUP BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!