SQL Server: Menggabungkan Nilai dengan Koma semasa Pengagregatan
Selalunya dalam SQL Server, anda perlu mengumpulkan data mengikut lajur tertentu dan kemudian menggabungkan nilai yang berkaitan ke dalam satu rentetan yang dipisahkan koma. Mari kita gambarkan ini dengan contoh. Bayangkan jadual bernama YourTable
dengan lajur ID
dan Value
:
<code>ID | Value -------|-------- 1 | a 1 | b 2 | c</code>
Matlamatnya adalah untuk menjana set hasil di mana setiap ID
unik mempunyai rentetan dipisahkan koma yang sepadan dengan entri Value
yang berkaitan. Kita boleh mencapai ini menggunakan kaedah FOR XML PATH
:
<code class="language-sql">SELECT ID, STUFF((SELECT ', ' + Value FROM YourTable t2 WHERE t1.ID = t2.ID FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS Values FROM YourTable t1 GROUP BY ID;</code>
Pertanyaan ini berfungsi seperti berikut:
SELECT
: Ini memilih lajur ID
dan bersedia untuk pengagregatan.SELECT
: Ini mendapatkan semula semua Value
entri yang sepadan dengan ID
semasa daripada pertanyaan luar. ', ' Value
menambah koma dan ruang sebelum setiap nilai.FOR XML PATH('')
: Ini menukar hasil pertanyaan dalaman kepada rentetan XML, menggabungkan nilai dengan berkesan. Rentetan kosong ''
menghalang teg XML daripada dijana..value('.', 'NVARCHAR(MAX)')
: Ini mengekstrak rentetan bercantum daripada XML.STUFF(..., 1, 2, '')
: Ini mengalih keluar ', ' di hadapan daripada rentetan bercantum.Keluaran akhir ialah:
<code>ID | Values -------|-------- 1 | a, b 2 | c</code>
Teknik ini menyediakan cara yang ringkas dan cekap untuk melaksanakan pengagregatan dipisahkan koma dalam SQL Server.
Atas ialah kandungan terperinci Bagaimana untuk Mengagregat dan Mengasingkan Nilai Koma dalam SQL Server Menggunakan FOR XML PATH?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!