簡體   English   中英

Oracle SQL - 根據 current_date 更改 WHERE 條件

[英]Oracle SQL - change WHERE condition depending on current_date

我有一張類似於

TradeDate        | Widgets
12-DEC-2020      6
13-DEC-2020      3
13-DEC-2020      9
14-DEC-2020      3
15-DEC-2020      12
15-DEC-2020      4
...
08-JAN-2020      11
...

我想編寫一個每日查詢,根據今天的日期返回一個結果集。 如果今天的日期是25-DEC-202001-JAN-2020 1 月 1 日,我想返回TradeDate是今天日期或 1 天后的行。

TradeDate        | Widgets
25-DEC-2020      26
25-DEC-2020      13
26-DEC-2020      19
26-DEC-2020      34

否則,如果日期不是 12 月 25 日、1 月 1 日或其他指定日期,我只想檢索當前日期的記錄。 如果今天的日期是 12 月 13 日,那么結果將顯示:

    TradeDate        | Widgets
    13-DEC-2020      3
    13-DEC-2020      9

我以為我在WHERE中使用CASE做一些事情:

SELECT TradeDate, Widgets FROM table
WHERE 
CASE WHEN (current_date like '25-DEC%' OR current_date like '01-JAN%') 
  THEN (TradeDate = current_date or TradeDate = current_date +1 )
  ELSE TradeDate = Current_date

但這不起作用。 有沒有一種簡單的方法來實現我所尋求的? 動態WHERE條件?

您可以使用:

where tradeDate >= trunc(sysdate) and
      tradeDate < trunc(sysdate) + interval '2' day

您可以按如下方式使用OR

SELECT TradeDate, Widgets
  FROM table
 WHERE (to_char(sysdate,'dd-MON') in ('25-DEC','01-JAN')
         AND TRADEDATE >= TRUNC(SYSDATE) 
         AND TRADEDATE < TRUNC(SYSDATE) + 2
        )
        OR TRADEDATE = TRUNC(SYSDATE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM