Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mencapai Pengagregatan Rentetan dalam Pelayan SQL Tanpa Fungsi 'AGG'?
Agregasi Rentetan Berkumpulan dalam Pelayan SQL: Gantikan untuk 'AGG'
SQL Server tidak mempunyai fungsi pengagregatan rentetan terbina dalam yang serupa dengan 'AGG ' dalam pertanyaan yang anda berikan. Walau bagaimanapun, terdapat pendekatan alternatif untuk menggabungkan nilai baris ke dalam hasil terkumpul.
Satu penyelesaian memanfaatkan fungsi FOR XML dan STUFF. Fungsi FOR XML menukar hasil pertanyaan dalaman kepada XML, yang kemudiannya boleh diproses dengan fungsi STUFF untuk mengalih keluar tag XML dan menggabungkan rentetan. Berikut ialah contoh:
SELECT *, (SELECT STUFF(( SELECT ', ' + CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID FOR XML PATH('') ), 1, 1, '') as CarModels FROM CarMakes make
Pendekatan lain menggunakan fungsi COALESCE dan ROW_NUMBER. Fungsi COALESCE menggabungkan nilai bukan nol, manakala fungsi ROW_NUMBER memperuntukkan nombor baris unik dalam setiap kumpulan. Pertanyaan berikut menggunakan pendekatan ini:
SELECT CarMakeID, CarMake, COALESCE( ( SELECT CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) = 1 ), '', COALESCE( ( SELECT ', ' + CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) > 1 ) ) ) as CarModels FROM CarMakes make
Pendekatan ini menyediakan kaedah alternatif untuk mengumpulkan dan menggabungkan rentetan dalam SQL Server, membolehkan pengagregatan data yang cekap dan boleh dibaca.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Pengagregatan Rentetan dalam Pelayan SQL Tanpa Fungsi 'AGG'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!