疑难统计问题
本帖最后由 waCtr 于 2012-11-22 10:45:41 编辑 数据表table1
部门 时间 级别 A类 B类
部门A .. 1 是
部门B .. 2 是
部门C .. 2 是
部门C .. 3 是
上面是表数据
想统计 某一个部门下是B类的 所有级别(1/2/3...) 的次数
比如:统计所有部门
所以部门 级别1 1次
所有部门 级别2 1次
所以部门 级别3 0次
或者统计A部门
A部门 级别1 1次
A部门 级别2 0次
A部门 级别3 0次
..
...
这种sql 估计会很复杂
秋高手指点....
[最优解释]
drop table tabletest
create table tableTest
(
dept varchar(20),
Class varchar(20),
CategoryA varchar(20),
CategoryB varchar(20),
CreateDate datetime
)
insert into tableTest values ('部门1','1','是','',getdate())
insert into tableTest values ('部门1','2','是','',getdate())
insert into tableTest values ('部门1','2','','是',getdate())
insert into tableTest values ('部门1','1','是','',getdate())
insert into tableTest values ('部门2','1','是','',getdate())
insert into tableTest values ('部门2','2','','是',getdate())
insert into tableTest values ('部门2','1','是','',getdate())
insert into tableTest values ('部门2','1','是','',getdate())
select * from tabletest
select dept,class,count(class) as 级别次数 from tabletest
--where dept=''
group by dept,class
order by dept
/*
部门112
部门122
部门213
部门221
*/
drop table tabletest
create table tableTest
(
dept varchar(20),
Class varchar(20),
CategoryA varchar(20),
CategoryB varchar(20),
CreateDate datetime
)
insert into tableTest values ('部门1','1','是','',getdate())
insert into tableTest values ('部门1','2','是','',getdate())
insert into tableTest values ('部门1','2','','是',getdate())
insert into tableTest values ('部门1','1','是','',getdate())
insert into tableTest values ('部门2','1','是','',getdate())
insert into tableTest values ('部门2','2','','是',getdate())
insert into tableTest values ('部门2','1','是','',getdate())
insert into tableTest values ('部门2','1','是','',getdate())
select * from tabletest
select dept,class,count(CASE WHEN CategoryB='' THEN NULL ELSE CategoryB END ) as 级别次数 from tabletest
group by dept,class
order by dept
/*
dept class 级别次数
-------------------- -------------------- -----------
部门1 1 0
部门1 2 1
部门2 1 0
部门2 2 1
警告: 聚合或其他 SET 操作消除了 Null 值。
(4 行受影响)
*/