记录表主要三个字段:cjid(int),gwid(int),out(datetime)
数据样式:
1,1000,‘2014-12-15 9:20:20’
2,2000,‘2014-11-15 9:20:20’
3,1000
4,3000,‘2014-10-15 9:20:20’
5,2000
希望select分类统计2014年以下的结果(也会有其他年份的,现在只统计2014年的):
gwid 1月份 2月份 3月份 4月份 5月份 6月份 7月份 8月份 9月份 10月份 11月份 12月份
1000
2000
3000
4000
**********************************************************************************************************
说明:
1、有【out】时间记录的统计一条,比如第一条记录,相当于2014年12月份增加一条,但 第三条数据没有out数据,就不能统计;
2、里面数据会有各种年份的;
感谢大家
------解决思路----------------------
你这月份列下面是什么数据啊
------解决思路----------------------
行转列 sum(case when),百度下参考实例一大堆
------解决思路----------------------
select
cjid,
sum(case when month(out)=1 and out is not null then 1 else 0 end) as '1月份',
sum(case when month(out)=2 and out is not null then 1 else 0 end) as '2月份',
sum(case when month(out)=3 and out is not null then 1 else 0 end) as '3月份',
...
from
tb
where
year(out)=2014
group by
cjid
中间的自己去补一下
因为只有12个月 直接写成静态了算了
------解决思路----------------------
select
gwid,
sum(case when MONTH(out)=1 then 1 else 0 end) '1月',
--...
sum(case when MONTH(out)=12 then 1 else 0 end) '12月'
from #tm
where year(out)='2014'
group by gwid