Oracle SQL-根据current_date更改WHERE条件

马普

我有一张类似的桌子

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我想返回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

我以为我是在使用的东西CASEWHERE

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条件?

大力水手

您可以使用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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章