日期:2014-05-17 浏览次数:20513 次
create table sp
(日期 date, 类别 varchar(5), 人员 varchar(10), 级别 varchar(5))
insert into sp
select '2013-1-2', 'A', '张三', 'A' union all
select '2013-1-3', 'A', '李四', 'B' union all
select '2013-1-5', 'B', '李五', 'B' union all
select '2013-1-5', 'C', '刘二', 'C' union all
select '2013-1-6', 'C', '顾一', 'A'
select yy '统计年份',
mm '统计月数',
count(1) '总人数',
sum(case 类别 when 'A' then 1 else 0 end) 'A类总人数',
sum(case when 类别='A' and 级别='A' then 1 else 0 end) 'A类中级别为A的人数',
sum(case when 类别='A' and 级别='B' then 1 else 0 end) 'A类中级别为B的人数',
sum(case 类别 when 'B' then 1 else 0 end) 'B类总人数',
sum(case 类别 when 'C' then 1 else 0 end) 'C类总人数'
from
(select 日期,类别,人员,级别,
year(日期) 'yy',month(日期) 'mm'
from sp
) t
group by yy,mm
/*
统计年份 统计月数 总人数 A类总人数 A类中级别为A的人数 A类中级别为B的人数 B类总人数 C类总人数
----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
2013 1 5 2 1 1 1 2
(1 row(s) affected)
*/
SELECT Year(日期) AS 统计年份, Month(日期) AS 统计月数,
COUNT(DISTINCT 人员) AS 总人数, SUM(CASE WHEN 类别='A' THEN 1 ELSE 0 END) AS A类总人数, SUM(CASE WHEN 类别='A' AN