日期:2014-05-19  浏览次数:20473 次

问一个关于count的比较难的问题
比如有个表T1

a                     b                         c

3                     2                         春
4                     3                         夏
0                     9                         春
7                     4                         冬
0                     3                         秋
1                     0                         春

select   count(a),count(b)   from   T1   group   by   c

==============================

我想求出的是a不等与0的个数,和b不等于0的个数,请问这样要什么实现。

------解决方案--------------------
select sum(case when a <> 0 then 1 else 0 end),sum(case when b <> 0 then 1 else 0 end) from T1 group by c
------解决方案--------------------
select sum(case a when 0 then 0 else 1 end),
sum(case b when 0 then 0 else 1 end),
c
from T1
group by c
------解决方案--------------------
Select
SUM(Case When a != 0 Then 1 Else 0 End) As Counta,
SUM(Case When b != 0 Then 1 Else 0 End) As Countb
From T1
------解决方案--------------------
Create Table T1
(a Int,
b Int,
c Nvarchar(10))
Insert T1 Select 3, 2, N '春 '
Union All Select 4, 3, N '夏 '
Union All Select 0, 9, N '春 '
Union All Select 7, 4, N '冬 '
Union All Select 0, 3, N '秋 '
Union All Select 1, 0, N '春 '
GO
Select
SUM(Case When a != 0 Then 1 Else 0 End) As Counta,
SUM(Case When b != 0 Then 1 Else 0 End) As Countb
From T1
GO
Drop Table T1
--Result
/*
Counta Countb
4 5
*/