2014-02-28 17 views
0

我想查询返回了不同的充数(动作)sql查询只显示结果时,他们有不同的值的计数?

Sample data 
    ID  Action 
1 125317 ADD 
2 125317 ADD 
3 125317 ADD 
4 125317 ADD 
5 125317 ADD 
6 125317 ADD 
7 125317 ADD 
8 125317 CLEAN 
9 125317 CLEAN 
10 125317 CLEAN 
11 125317 CLEAN 
12 125317 CLEAN 
13 125317 CLEAN 
14 125317 CLEAN 
15 359905 ADD 
16 359905 ADD 
17 359905 ADD 
18 359905 CLEAN 

我的查询目前可以得到folliwng结果..

ID ACTION COUNT1 
1 359905 ADD 3 
2 359905 CLEAN 1 
3 125317 ADD 7 
4 125317 CLEAN 7 

但是,我只希望它returen行1和row2只是因为count1不同。

回答

1

如果你只是想的ID,你可以使用聚合和having子句中数:

select id 
from table t 
group by id 
having sum(action = 'add') <> sum(action = 'clean'); 

如果你想计数,我会把他们select子句中:

select id, sum(action = 'add') as adds, sum(action = 'clean') as cleans 
from table t 
group by id 
having sum(action = 'add') <> sum(action = 'clean'); 
+0

这里是我当前的查询select t.id,t.action,count(t.action)as count1 from table t where t.id = 125317 or t.id = 359905 by t.id,t.action;我怎样才能添加您的零件到我的查询? – tyyt2010

+0

@ tyyt2010。 。 。这是对这个问题的重大改变。你应该问另一个问题,并参考这一个。 –