当前位置: 代码迷 >> Sql Server >> 一个操作记录表怎么分月显示
  详细解决方案

一个操作记录表怎么分月显示

热度:47   发布时间:2016-04-24 09:35:37.0
一个操作记录表如何分月显示
记录表主要三个字段: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 
  相关解决方案