2013-08-17 23 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' –