为了便于讨论,认为这基本表(测试)在访问...SQL计数()与组通过不返回0 /零记录
ID division name role
1 1 Frank 100
2 2 David 101
3 3 John 101
4 2 Mike 102
5 2 Rob 102
7 3 Dave 102
8 3 Greg 102
我想算有一定角色的用户在一个部门。如果我做一个简单的计数(),我得到正确的返回0:
SELECT COUNT(ID) as ct
FROM Test
WHERE role >=101 and division=1;
产生
division ct
1 0
不过,我想在结果中包括(分区编号为进一步加入清酒,报告等),并且它总是返回null /没有行,而不是划分和0计数:
SELECT division, COUNT(ID) as ct
FROM Test WHERE role >=101
GROUP BY division
HAVING division=1;
或
SELECT division, COUNT(ID) as ct
FROM Test
WHERE role >=101 AND division=1
GROUP BY division;
产生
division ct
我最初来到这一点,因为我想如果用户输入一个部门,是不是在表(如4)也很喜欢这个工作,...
SELECT division, COUNT(ID) as ct
FROM Test
WHERE role >=101 AND division IN (1,2,4)
GROUP BY division;
产生
代替
division ct
1 0
2 3
4 0
如果计数为0,是否不可能返回除计数以外的除法?
你肯定第一个“收益率”,这似乎违背你的问题? – 2009-12-16 20:46:22
它的正确性,“WHERE division = 1”的限制因素不会伤害它,只是试图在结果中返回除法值而打破它。 – BikeMrown 2009-12-16 20:54:58
你可以自己加入这个,SELECT分区,Count(ID)作为ct FROM Test RIGHT JOIN(从分组中选择分区)AS列表WHERE ..... – MindStalker 2009-12-16 21:21:20