PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Setara dengan array_agg PostgreSQL di Oracle XE 11.2

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 |

DEMO



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengubah jenis kolom di Heroku?

  2. Liquibase hapus semua fungsi - postgresql

  3. Tidak ada batasan unik yang cocok dengan kunci yang diberikan untuk tabel yang direferensikan

  4. Bagaimana saya bisa mengimpor file .sql ke database postgres Heroku saya?

  5. Fungsi Postgres