Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melakukan Pengagregatan Rentetan Berkumpulan dalam Pelayan SQL Tanpa LISTAGG?
Agregasi Rentetan Berkumpulan dalam SQL Server
Apabila bekerja dengan SQL Server, satu tugas biasa ialah mengagregatkan nilai rentetan daripada berbilang baris menjadi satu , rentetan dipisahkan koma. Sebagai contoh, memandangkan jadual dengan pengeluar dan model kereta, anda mungkin mahu membuat set data yang mengumpulkan model kereta mengikut pembuatan kereta.
Alternatif kepada LISTAGG untuk SQL Server
Dalam Oracle, tugasan ini biasanya dilakukan menggunakan fungsi LISTAGG. Walau bagaimanapun, SQL Server tidak mempunyai LISTAGG terbina dalam bersamaan. Sebaliknya, anda boleh menggunakan gabungan fungsi STUFF dan FOR XML PATH untuk mencapai hasil yang sama.
Pertanyaan berikut menunjukkan cara untuk mencapai pengagregatan rentetan berkumpulan dalam SQL Server menggunakan STUFF dan FOR XML PATH:
SELECT make.CarMakeID, make.CarMake, ( SELECT STUFF( ( SELECT ',' + model.CarModel FROM CarModels WHERE model.CarMakeID = make.CarMakeID FOR XML PATH('') ), 1, 1, '' ) AS CarModels ) FROM CarMakes AS make;
Dalam pertanyaan ini, subkueri menggunakan fungsi FOR XML PATH untuk menggabungkan model kereta menjadi satu rentetan XML, dipisahkan oleh koma. Fungsi STUFF kemudian mengeluarkan koma di hadapan dan mengembalikan rentetan bercantum sebagai lajur CarModels.
Berikut ialah output pertanyaan:
| CarMakeID | CarMake | CarModels | |----------|---------|-----------| | 1 | SuperCars | Zoom, Wow, Awesome | | 2 | MehCars | Mediocrity, YoureSettling |
Teknik ini menyediakan cara yang mudah dan cekap untuk mencapai pengagregatan rentetan berkumpulan dalam SQL Server, walaupun dalam situasi di mana penggabungan rentetan adalah rumit atau termasuk aksara khas.
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Pengagregatan Rentetan Berkumpulan dalam Pelayan SQL Tanpa LISTAGG?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!