2013-08-17 22 views
1

我已經到位如下表...小組由和在一起在哪裏?

 ID  awaiting approve decline  
     100  1   0   0  
     100  0   0   1  
     102  1   0   0  
     103  0   1   0  
     104  0   1   0  
     104  0   1   0  
     106  1   0   0  
     107  0   1   0  
     107  1   0   0  
     107  1   0   0 

從上表我想要得到的是,如果ID的數量列出多次和ID或兩個中的一個或全部更ID等待= 1?統計這些ID符合上述條件。

和另一個查詢我需要的是,在其中,如果該ID僅列出並僅只是一次,並等待= 1;

請幫助....

+0

至少崗位所需的輸出在您的樣本數據 – peterm

+0

你爲什麼給我感冒? –

+0

我剛纔問,如有不清楚的問,這樣我可以澄清更多...但是,爲什麼消極的? –

回答

7

首先

SELECT COUNT(*) total 
    FROM 
(
    SELECT id 
    FROM Table1 
    GROUP BY id 
    HAVING COUNT(*) > 1 
    AND MAX(awaiting = 1) > 0 
) q 

SELECT COUNT(*) total 
    FROM 
(
    SELECT id 
    FROM Table1 
    GROUP BY id 
    HAVING COUNT(*) = 1 
    AND MAX(awaiting = 1) > 0 
) q 

這是基於爲您的請求查詢SQLFiddle演示

+0

+1非常不錯的代碼,但從最後刪除'q'不行的原因是什麼? –

+0

@TusharGupta這不是沒有'q'工作,因爲每一個派生表(子查詢)必須有一個別名。這裏是'q'是別名。 – peterm

+0

哦.. !!這意味着,它的工作是這樣'SELECT COUNT(*)FROM總額和q''q'是'SELECT ID FROM表1 GROUP BY ID HAVING COUNT(*)= 1,MAX(等待= 1)> 0' –