求一SQL语句...
有表T1,结构如下:
A B
a1 0
a1 NULL
a2 NULL
a2 NULL
select A,count(B) from T1
where B=0
group by A
本想得到如下结果:
a1 1
a2 0
但不如意,只得到a1 1的结果,不知道怎么样才能得到想要的结果?
问题点数:20、回复次数:9Top
1 楼cncharles(旺仔)回复于 2005-09-04 08:08:37 得分 0
Select A, Count(B) From T1
Where IsNull(B, 0)=0
Group by ATop
2 楼hr168(Ocb.Hr)回复于 2005-09-04 08:11:11 得分 0
这么写就ok了,但是不知道你的意思是什么,我只是猜测的,是不是null不计算条数啊,下面的语句就是这个意思:
select A,count(B) from T1 group by A
Top
3 楼MinxSoft(梦想飞翔)回复于 2005-09-04 08:41:36 得分 0
感谢 cncharles(旺仔) ,不过对于IsNull(B, 0)=0这一句不是很理解,当B为Null的时候,这句就是0=0,显然是成立的,但是既然条件为真,统计出来怎么还会是:
a1 1
a2 0
呢?Top
4 楼cncharles(旺仔)回复于 2005-09-04 09:10:23 得分 0
Select A, Count(IsNull(B, 0)) From T1
Where IsNull(B, 0)=0
Group by A
//如果B是null就把它转换为0Top
5 楼MinxSoft(梦想飞翔)回复于 2005-09-04 09:36:08 得分 0
我的意思其实是希望先Group by,再计算whereTop
6 楼MinxSoft(梦想飞翔)回复于 2005-09-04 09:38:43 得分 0
就是先把字段A中的所有非重复值列出来以后,再计算B是否满足条件,看看满足条件的个数,就算没有满足条件的,也会返回0Top
7 楼cncharles(旺仔)回复于 2005-09-04 10:03:20 得分 0
Select T1.A, IsNull(T2.B2, 0) As B
From T1
Left Join (
Select A, Count(B) As B2
From T1
Where B=0
Group by A ) As T2
On T1.A=T2.A
Order By T1.A
Top
8 楼cncharles(旺仔)回复于 2005-09-04 10:24:16 得分 20
不好意思, 上面都没搞错了.下面的应该是你想要的.
Select T2.A, IsNull(T3.A1, 0)
From (Select A From T1 Group by A) As T2
Left Join (Select A, Count(A) As A1
From T1 Where B=0 Group By A) As T3
On T2.A=T3.A
Order by T2.ATop
9 楼MinxSoft(梦想飞翔)回复于 2005-09-04 15:01:45 得分 0
晕倒,也不用怎么复杂吧,真的是先Group by,然后再where,晕晕滴....Top




