Kecuali Anda menggunakannya dalam prosedur tersimpan untuk menyimpan output sebagai array (atau koleksi), kueri dengan LISTAGG
harus cukup dan memberikan hasil yang sama.
select ID , LISTAGG(Category,',') WITHIN GROUP ( ORDER BY ID ) Categories
FROM yourtable GROUP BY ID;
Di oracle, kita tidak memiliki fungsi konversi langsung seperti array_agg
. Namun, Anda dapat membuat jenis koleksi yang ditentukan pengguna, lalu gunakan CAST
dan COLLECT
berfungsi untuk mengubahnya menjadi NESTED TABLE
untuk mendapatkan hasil yang diinginkan sama.
Pertama, buat koleksi TYPE
.
create or replace TYPE categorytype as TABLE OF VARCHAR2(20);
Sekarang, menjalankan kueri ini sama dengan menggunakan string_agg
atau LISTAGG
, meskipun categories
adalah larik atau koleksi , bukan string.
select id, CAST ( COLLECT(Category) as categorytype ) categories
FROM yourtable group by id;
| ID | CATEGORIES |
|----|------------|
| 1 | Cat1,Cat2 |
| 2 | Cat3,Cat4 |