Oracle

使用案例語句過濾上個月的數據

  • November 11, 2018

這些是我可用的屬性:

DT_CURRENT_DT Month Year
11-OCT-18     10    2018
12-OCT-18     10    2018
13-OCT-18     10    2018
14-OCT-18     10    2018
15-OCT-18     10    2018
16-OCT-18     10    2018
17-OCT-18     10    2018

我需要一個基於 sysdate 提取上個月數據的邏輯。

where DT_CURRENT_DT >=  trunc (sysdate, 'MM') - interval '1' month
and DT_CURRENT_DT <   trunc (sysdate, 'MM')

但是,當 sysdate = 2018 年 11 月時,必須從 10 月 15 日到 10 月底提取數據。對於其他月份,它必須像上面的程式碼一樣執行。

更新(11 月 11 日) - 案常式式碼版本:

WHERE  DT_CURRENT_DT >= CASE 
                      WHEN extract ( month from trunc (sysdate, 'MM')) = 11 and extract ( year from trunc (sysdate, 'MM')) = 2018
                      THEN to_date('15-OCT-2018')
                      ELSE  trunc(sysdate, 'MM') - interval '1' month
                      END
AND DT_CURRENT_DT <   trunc (sysdate, 'MM') 

嘗試將where子句更改為以下內容:

where DT_CURRENT_DT >= trunc (sysdate, 'MM') - interval '1' month
 and DT_CURRENT_DT < trunc (sysdate, 'MM')
 and (
      trunc(sysdate, 'MM') != to_date('01-NOV-2018')
      or extract(day from DT_CURRENT_DT) >= 15
     );

引用自:https://dba.stackexchange.com/questions/222232