Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

LISTAGG di Oracle untuk mengembalikan nilai yang berbeda

19c dan yang lebih baru:

select listagg(distinct the_column, ',') within group (order by the_column)
from the_table

18c dan sebelumnya:

select listagg(the_column, ',') within group (order by the_column)
from (
   select distinct the_column 
   from the_table
) t

Jika Anda membutuhkan lebih banyak kolom, sesuatu seperti ini mungkin yang Anda cari:

select col1, listagg(col2, ',') within group (order by col2)
from (
  select col1, 
         col2,
         row_number() over (partition by col1, col2 order by col1) as rn
  from foo
  order by col1,col2
)
where rn = 1
group by col1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak ada pemetaan Dialek untuk tipe JDBC:-9

  2. Menemukan baris yang tidak berisi data numerik di Oracle

  3. Dapatkan nama prosedur atau fungsi pemanggilan di Oracle PL/SQL

  4. kesalahan sintaks dengan permintaan pembaruan saat bergabung dengan beberapa tabel

  5. Membuat penangan logging untuk terhubung ke Oracle?