Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengagregat Nilai Dipisahkan Koma Menggunakan SQL Server GROUP BY Klausa?

Bagaimana untuk Mengagregat Nilai Dipisahkan Koma Menggunakan SQL Server GROUP BY Klausa?

Linda Hamilton
Linda Hamiltonasal
2025-01-10 17:52:43707semak imbas

How to Aggregate Comma-Separated Values Using SQL Server's GROUP BY Clause?

Menggunakan SQL Server GROUP BY untuk Menggabungkan Nilai Dipisahkan Koma

Klausa

SQL Server GROUP BY sangat berharga untuk mengagregat data berdasarkan atribut yang dikongsi. Walau bagaimanapun, menggabungkan berbilang nilai ke dalam rentetan yang dipisahkan koma memerlukan pendekatan yang lebih maju sedikit. Di sinilah fungsi STUFF terbukti berguna.

Begini cara anda boleh mencapai pengagregatan dipisahkan koma menggunakan GROUP BY dan STUFF:

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

Mari kita rungkai pertanyaan ini:

  • Luar SELECT: Ini mendapatkan semula ReportId dan rentetan Email agregat.
  • Fungsi
  • STUFF: Ini menggabungkan e-mel dengan bijak, memasukkan koma dan ruang antara setiap e-mel.
  • Dalam SELECT: Subkueri ini mendapatkan semula semua e-mel yang dikaitkan dengan ReportId tertentu.
  • FOR XML PATH(''): Ini menukar set keputusan pertanyaan dalaman kepada rentetan XML, menyediakan format yang mudah untuk penggabungan.
  • WHERE klausa: Ini memastikan pertanyaan dalaman hanya memilih e-mel yang sepadan dengan ReportId daripada pertanyaan luar.

Menggunakan pertanyaan ini pada sampel data akan menghasilkan hasil berikut:

ReportId Email
1 [email protected], [email protected]
2 [email protected]
3 [email protected], [email protected]

Teknik ini dengan cekap menjana senarai dipisahkan koma, memudahkan pengendalian data agregat.

Atas ialah kandungan terperinci Bagaimana untuk Mengagregat Nilai Dipisahkan Koma 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