到目前为止,此查询使用exists:
SELECT CASE WHEN EXISTS
( SELECT *
FROM TEST1
WHERE timestamp = to_char(sysdate-1, 'yyyymmdd') || '0000'
)
THEN 0
ELSE 1
END AS FLG
FROM dual
现在,我需要添加另一个标准。 由于我的数据的这些一致计数值为100,例如:
SQL> select count(*), timestamp from TEST1 group by timestamp order by 2 desc;
COUNT(*) TIMESTAMP
---------- ----------
100 2.0111E+11
100 2.0111E+11
我现在需要更改此查询,以便我只获得那些计数(*)为100
的查询
如果他们这样做,那么设置我的标志= 0,如果没有设置我的标志= 1。
我不确定将此计数标准值添加到100的位置。我仍然可以使用CASE吗?
答案 0 :(得分:3)
您可以尝试查看having
- 声明:
select count(*), timestamp
from TEST1
group by timestamp
having count(*) = 100
基本上它与where
相同,但仅适用于聚合。
答案 1 :(得分:0)
像这样的东西
SELECT CASE WHEN EXISTS( SELECT *
FROM TEST1
WHERE timestamp = to_char(sysdate-1, 'yyyymmdd') || '0000'
)
and
DECODE(( SELECT count(*)
FROM TEST1
WHERE timestamp = to_char(sysdate-1, 'yyyymmdd') || '0000'
),100,true,false)
THEN 0
ELSE 1
END AS FLG
FROM dual