34,873
社区成员
发帖
与我相关
我的任务
分享
select nYear as 年份,(case id when 1 then '一月份' else '' end) as 一月份 ,
(case id when 2 then '二月份' else '' end) as 二月份 ,
(case id when 3 then '三月份' else '' end) as 三月份 ,
(case id when 4 then '四月份' else '' end) as 四月份 ,
(case id when 5 then '五月份' else '' end) as 五月份,
(case id when 6 then '六月份' else '' end) as 六月份 ,
(case id when 7 then '七月份' else '' end) as 七月份 ,
(case id when 8 then '八月份' else '' end) as 八月份
from Table_Time
//改改列名条件 应该可以。。。
select year(_date) as 年份,
Sum(case when month(_date)='01' then _num else 0 end ) as 一月,
Sum(case when month(_date)='02' then _num else 0 end ) as 二月,
Sum(case when month(_date)='03' then _num else 0 end ) as 三月,
Sum(case when month(_date)='04' then _num else 0 end ) as 四月,
Sum(case when month(_date)='05' then _num else 0 end ) as 五月,
Sum(case when month(_date)='06' then _num else 0 end ) as 六月,
Sum(case when month(_date)='07' then _num else 0 end ) as 七月,
Sum(case when month(_date)='08' then _num else 0 end ) as 八月,
Sum(case when month(_date)='09' then _num else 0 end ) as 九月,
Sum(case when month(_date)='10' then _num else 0 end ) as 十月,
Sum(case when month(_date)='11' then _num else 0 end ) as 十一月,
Sum(case when month(_date)='12' then _num else 0 end ) as 十二月
from #tryTable group by year(_date)
declare @sql varchar(max)
set @sql = 'select year(_date) [年份]'
select @sql = @sql + ',sum(case month(_date) when ''' + ltrim(_date) + ''' then _num else 0 end) [' + ltrim(_date) + '月]'
from (select month(_date) _date from dbo.Test group by month(_date)) t
select @sql = @sql + ' from Test group by year(_date)'
exec(@sql)select datepart(year,_date) [年份],
sum( case when datepart(month,_date)=1 then _num else 0 end) [1月],
sum( case when datepart(month,_date)=2 then _num else 0 end) [2月],
--......
from tb group by datepart(year,_date)
declare @sql varchar(max)
set @sql = 'select convert(varchar(4),_date,120)'
select @sql = @sql + ',max(case convert(varchar(6),_date,112) when convert(varchar(4),_date,112) + ''' + ltrim(_date) + ''' then _num else 0 end)[' + ltrim(_date) + ']'
from (select month(_date) from tb)t
select @sql = @sql + ' from tb group by convert(varchar(4),_date,120)'
exec(@sql)