Pengagregatan Rentetan Berkumpulan: Fungsi LISTAGG dalam Pelayan SQL
Pengagregatan rentetan dalam SQL Server menyediakan cara untuk menggabungkan berbilang nilai rentetan menjadi satu gabungan rentetan. Apabila bekerja dengan data terkumpul, fungsi ini penting dalam senario seperti menjana senarai dipisahkan koma bagi nilai yang berbeza.
Pertimbangkan skema berikut, di mana kami ingin mengagregatkan model kereta dalam setiap pembuatan kereta:
| CarMakeID | CarMake ------------------------ | 1 | SuperCars | 2 | MehCars | CarMakeID | CarModelID | CarModel ----------------------------------------- | 1 | 1 | Zoom | 2 | 1 | Wow | 3 | 1 | Awesome | 4 | 2 | Mediocrity | 5 | 2 | YoureSettling
Keluaran yang kami inginkan ialah:
| CarMakeID | CarMake | CarModels --------------------------------------------- | 1 | SuperCars | Zoom, Wow, Awesome | 2 | MehCars | Mediocrity, YoureSettling
Untuk mencapai matlamat ini pengagregatan, SQL Server menyediakan beberapa pilihan. Walau bagaimanapun, pendekatan yang disyorkan untuk penggabungan rentetan ialah menggunakan fungsi STRING_AGG.
Pertanyaan semakan berikut menggunakan fungsi STRING_AGG sebagai ganti AGG daripada pertanyaan awal:
SELECT *, (SELECT STRING_AGG(CarModel, ', ') AS CarModels FROM CarModels model WHERE model.CarMakeID = make.CarMakeID GROUP BY make.CarMakeID) FROM CarMakes make
Fungsi STRING_AGG ialah fungsi agregat terbina dalam yang mengambil nilai lajur dan menggabungkan semua nilai berbeza menjadi satu rentetan. Parameter SEPARATOR pilihan membolehkan kami menentukan pembatas antara nilai dan dalam kes ini, kami telah memilih koma.
Pertanyaan ini akan menghasilkan output yang diingini, di mana lajur CarModels mengandungi senarai kereta yang dipisahkan koma model untuk setiap pembuatan.
Atas ialah kandungan terperinci Bagaimanakah Fungsi STRING_AGG SQL Server Boleh Digunakan untuk Pengagregatan Rentetan Berkumpulan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!