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

Menampilkan nilai LISTAGG dalam sel berdasarkan nilai kolom lain

Pembaruan Anda setara dengan ini.

UPDATE schedules s 
SET    days = (SELECT LISTAGG(day, ', ') 
                        within group ( ORDER BY day_order ) 
               FROM   days d 
               WHERE  d.schedule IN ( 'Weekend', 'Weekday' ) 
                      AND d.schedule = s.schedule 
               GROUP  BY d.schedule ) ;

Namun, saya tidak akan merekomendasikan ini. Menyimpan catatan sebagai nilai yang dipisahkan koma pasti akan menyebabkan masalah bagi Anda di masa mendatang. Hanya gunakan untuk menampilkan hasil menggunakan kueri seperti di bawah ini. Ini mengasumsikan bahwa di tabel hari Anda, ada baris unik untuk setiap hari. Jika ada duplikat, join ke hasil yang berbeda yang ditetapkan dari hari.

SELECT d.id, 
       d.schedule, 
       LISTAGG(s.day, ', ') 
         within GROUP ( ORDER BY d.day_order ) 
FROM   days d 
       join schedules s 
         ON ( d.schedule = s.schedule ) 
WHERE  d.schedule IN ( 'Weekend', 'Weekday' ) 
GROUP  BY d.id, 
          d.schedule 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Downtime dan Hotpatch menerapkan mode di adop R12.2

  2. Cara memanggil blok anonim pl/sql dari blok anonim pl/sql

  3. Pilih EMP dengan SAL maks dari setiap DEPT

  4. Saat kesalahan melanjutkan jenis penanganan kesalahan berikutnya di PL/SQL oracle

  5. Pilih dari tampilan gabungan dengan penggabungan tidak berfungsi?