Menggabungkan dan Menghimpunkan Berbilang Baris dalam Oracle
Dalam Oracle, tugas untuk menggabungkan rekod berdasarkan keadaan pengumpulan boleh menjadi mencabar. Pertimbangkan jadual seperti ini:
NAME GROUP_NAME name1 groupA name2 groupB name5 groupC name4 groupA name3 groupC
Untuk mencapai hasil yang diingini untuk mengumpulkan dan menggabungkan lajur "NAME" berdasarkan "GROUP_NAME", anda boleh memanfaatkan fungsi LISTAGG dalam Oracle 11g atau lebih baru:
SELECT group_name, LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) "names" FROM name_table GROUP BY group_name
Walau bagaimanapun, jika anda menggunakan versi Oracle yang tidak menyokong LISTAGG, terdapat kaedah alternatif. Satu pendekatan menggunakan fungsi analisis:
select grp, ltrim(max(sys_connect_by_path (name, ',' )), ',') scbp from (select name, grp, row_number() over (partition by grp order by name) rn from tab ) start with rn = 1 connect by prior rn = rn-1 and prior grp = grp group by grp order by grp
Dengan menggabungkan teknik ini, anda boleh menggabungkan dan mengumpulkan berbilang baris dengan berkesan dalam Oracle, walaupun tanpa LISTAGG.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan dan Kumpulan Baris dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!