Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan dan Menghimpunkan Berbilang Baris dalam Oracle?
Menggabungkan dan Menghimpunkan Berbilang Baris dalam Oracle
Artikel ini menangani cabaran untuk menggabungkan dan mengumpulkan berbilang baris dalam Oracle, membolehkan anda mengubah jadual dengan data bertaburan ke dalam struktur yang lebih teratur. Pertimbangkan senario berikut:
Anda mempunyai jadual yang mengandungi dua lajur, NAME dan GROUP_NAME:
NAME GROUP_NAME name1 groupA name2 groupB name5 groupC name4 groupA name3 groupC
Matlamat anda adalah untuk mencipta hasil dengan nama digabungkan untuk setiap nilai GROUP_NAME yang unik:
GROUP_NAME NAMES groupA name1,name4 groupB name2 groupC name3,name5
Dalam kes ini, fungsi LISTAGG, tersedia dalam Oracle 11g dan lebih baru, menyediakan penyelesaian yang mudah:
SELECT group_name, LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) "names" FROM name_table GROUP BY group_name
Walau bagaimanapun, jika anda bekerja dengan versi Oracle sebelum 11g, anda boleh menggunakan analitik untuk mencapai hasil yang sama:
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 memanfaatkan kedua-dua LISTAGG dan analitis, anda boleh menggabungkan dan mengumpulkan berbilang baris dengan cekap dalam Oracle, mengubah data anda menjadi perwakilan yang lebih bermakna untuk analisis dan pelaporan lanjut.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan dan Menghimpunkan Berbilang Baris dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!