2011-07-21 28 views
3

到目前爲止,這個查詢作品使用存在:幫助,使用Oracle SQL case語句計數標準

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 一個COUNT(*),如果他們接盤我的標誌= 0,如果沒有設置我的標誌= 1。

我不確定在哪裏添加此計數條件值100.我仍然可以使用CASE嗎?

+0

你需要尋找到HAVING子句 – diagonalbatman

回答

3

你可以嘗試尋找到having語句來:

select count(*), timestamp 
from TEST1 
group by timestamp 
having count(*) = 100 

基本上它是一樣where,但僅限於聚集。

+0

感謝。現在效果很棒! – jdamae

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