到目前为止,我已将此case语句用于我基本上为结果赋值1或0的情况。 现在,我想调整一下并添加第二列(日期信息)。
现在是工作案例陈述:
select
case when count(*) = 0 then 1 else 0 end result
from Table1
where
to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') >= trunc(sysdate)-1;
结果是:
RESULT
----------
0
现在,我希望在同一结果集中获得相同的日期信息(to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') >= trunc(sysdate)-1)
。
有没有办法一次通过?结果我想得到:
MYDT RESULT
------ ---------
18-JUL-11 0
答案 0 :(得分:3)
根据您的数据,有两种方法可以执行此操作。
例如,如果您可以为日期设置多个值,但总是希望计数为*,则可以
With Totalcount as (select
case when count(*) = 0 then 1 else 0 end result
from Table1
where
to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') >= trunc(sysdate)-1)
SELECT DISTINCT
to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') MYDT,
totalcount.result
FROM
Table1 , Totalcount
where
to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') >= trunc(sysdate)-1
但是,如果您想按日期计算,则需要
select
to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') as mydt,
case when count(*) = 0 then 1 else 0 end result
from Table1
where
to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') >= trunc(sysdate)-1
GROUP BY
to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD')
答案 1 :(得分:0)
select
to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') as mydt,
case when count(*) = 0 then 1 else 0 end result
from Table1
where
to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') >= trunc(sysdate)-1;