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

ORACLE SQL:Isi tanggal yang hilang

Anda bisa mendapatkan periode 30 hari dari SYSDATE sebagai berikut (saya berasumsi Anda ingin memasukkan SYSDATE ?):

WITH mydates AS (
    SELECT TRUNC(SYSDATE) - 1 + LEVEL AS due_date FROM dual
   CONNECT BY LEVEL <= 31
)

Kemudian gunakan di atas untuk melakukan LEFT JOIN dengan kueri Anda (mungkin bukan ide yang buruk untuk memasukkan kueri Anda ke dalam CTE juga):

WITH mydates AS (
    SELECT TRUNC(SYSDATE) - 1 + LEVEL AS due_date FROM dual
   CONNECT BY LEVEL <= 31
), myorders AS (
    select 
    (case when trunc(so.revised_due_date) <= trunc(sysdate) 
        then trunc(sysdate) else trunc(so.revised_due_date) end) due_date, 
    (case 
        when (case when sp.pr_typ in ('VV','VD') then 'DVD' when sp.pr_typ in ('RD','CD') 
        then 'CD' end) = 'CD' 
        and  (case when so.tec_criteria in ('PI','MC') 
        then 'XX' else so.tec_criteria end) = 'OF'
        then sum(so.revised_qty_due)
    end) CD_OF_VOLUME
    from shop_order so
    left join scm_prodtyp sp
    on so.prodtyp = sp.prodtyp
    where so.order_type = 'MD' 
    and so.plant = 'W' 
    and so.status_code between '4' and '8' 
    and trunc(so.revised_due_date) <= trunc(sysdate)+30
    group by trunc(so.revised_due_date), so.tec_criteria, sp.pr_typ
    order by trunc(so.revised_due_date)
)
SELECT mydates.due_date, myorders.cd_of_volume
  FROM mydates LEFT JOIN myorders
    ON mydates.due_date = myorders.due_date;

Jika Anda ingin menampilkan angka nol pada tanggal yang "hilang" alih-alih NULL , gunakan COALESCE(myorders.cd_of_volume, 0) AS cd_of_volume di atas.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rotate/pivot table dengan agregasi di Oracle

  2. Oracle SQL mengembalikan baris dengan cara yang sewenang-wenang ketika tidak ada klausa urutan dengan yang digunakan

  3. Cara Mendapatkan Tanggal Dari String di Oracle

  4. Menggunakan pivot pada beberapa kolom dari baris Oracle

  5. Fungsi Concat tidak berfungsi - jumlah argumen tidak valid