在Oracle SQL中使用变量

时间:2017-12-24 22:56:09

标签: sql oracle

我对Oracle SQL没有多少经验,并且一直在尝试完成我打算使用的任务

select count(*) from TABLE where date = (select trunc(sysdate -1 ) from dual) 

上面的查询给出了sysdate减去1的所有记录的结果。我想自动处理Sat和Sunday的场景并将查询修改为如下所示

select count(*) from TABLE where date = (select trunc(sysdate -@var ) from dual)

其中@var = 2,如果查询在星期日运行,@ var = 3,如果查询在星期一运行

1 个答案:

答案 0 :(得分:0)

TRUNC( SYSDATE, 'IW' )会将日期截断为ISO周的开始日期 - 因此周一午夜。 TRUNC( SYSDATE ) - TRUNC( SYSDATE, 'IW' )将给出自ISO周开始以来的整天天数(星期一= 0,星期二= 1,星期日= 6),您可以将其放入CASE语句中:

select count(*)
from   your_table
where  date_col = TRUNC(SYSDATE) - CASE TRUNC(SYSDATE) - TRUNC(SYSDATE, 'IW')
                                   WHEN 0 THEN 3 -- Monday
                                   WHEN 6 THEN 2 -- Sunday
                                          ELSE 1 -- Other days
                                   END