
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!
Perbezaan antara vscode dan visual studio
Apakah arahan yang biasa digunakan dalam vue?
Bagaimana untuk memulihkan pelayar IE untuk melompat ke EDGE secara automatik
Apakah tetapan memori maya yang sesuai?
Bagaimana untuk mempercepatkan halaman web
Perbezaan antara rawak dan pseudo-rawak
Apakah itu Bitcoin? Adakah ia satu penipuan?
Bagaimana untuk menyembunyikan alamat IP pada TikTok