日期
2011-01-06
2011-02-06
2011-03-06
2011-04-06
2011-05-06
2011-06-06
2011-06-07
2011-06-08
2011-06-092012-01-01
2012-01-02
2012-01-03
(执行SQL语句后)
我想显示出来是这样: 年份   1月 2月 3月 4月 5月 6月      ~12月
                     2011   1   1   1   1   1   4
                     2012   3   0   0   0   0   0
怎么实现

解决方案 »

  1.   


    declare @T table (日期 datetime)
    insert into @T
    select '2011-01-06' union all
    select '2011-02-06' union all
    select '2011-03-06' union all
    select '2011-04-06' union all
    select '2011-05-06' union all
    select '2011-06-06' union all
    select '2011-06-07' union all
    select '2011-06-08' union all
    select '2011-06-09' union all
    select '2012-01-01' union all
    select '2012-01-02' union all
    select '2012-01-03'select 
    年份=year(日期),
    [1月]=sum(case when month(日期)=1 then 1 else 0 end),
    [2月]=sum(case when month(日期)=2 then 1 else 0 end),
    [3月]=sum(case when month(日期)=3 then 1 else 0 end),
    [4月]=sum(case when month(日期)=4 then 1 else 0 end),
    [5月]=sum(case when month(日期)=5 then 1 else 0 end),
    [6月]=sum(case when month(日期)=6 then 1 else 0 end),
    [7月]=sum(case when month(日期)=7 then 1 else 0 end),
    [8月]=sum(case when month(日期)=8 then 1 else 0 end),
    [9月]=sum(case when month(日期)=9 then 1 else 0 end),
    [10月]=sum(case when month(日期)=10 then 1 else 0 end),
    [11月]=sum(case when month(日期)=11 then 1 else 0 end),
    [12月]=sum(case when month(日期)=12 then 1 else 0 end)
    from @T group by year(日期)
    /*
    年份          1月          2月          3月          4月          5月          6月          7月          8月          9月          10月         11月         12月
    ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
    2011        1           1           1           1           1           4           0           0           0           0           0           0
    2012        3           0           0           0           0           0           0           0           0           0           0           0
    */