当前位置: 代码迷 >> Sql Server >> sql 分类查询按月统计有关问题
  详细解决方案

sql 分类查询按月统计有关问题

热度:74   发布时间:2016-04-24 09:31:17.0
sql 分类查询按月统计问题
表结构是这样的
id code money useNum date
1 000100020001 10 10 2014/10/10
2 000100020001 20 20 2014/11/10
3 000100020001 30 30 2014/12/10
4 000100010001 5 5 2014/10/10
5 000100010001 15 15 2014/11/10
6 000100010001 25 25 2014/12/10

想得到用电量结果
code 10月 11月 12月
000100010001 5.0 15.0 25.0
000100020001 10.0 20.0 30.0

因为没有其他月份,所以1到9月不显示

写了如下sql语句

declare @sql varchar(2000)
declare @mon varchar(2)
set @sql = 'select code'
select @sql = @sql + ',sum(case '''+mon+'''  when '''+mon+''' then useNum end) ['+mon+'月]'
from (select distinct substring(convert(varchar(7),date,120),6,2) mon from money) as a select 
@sql = @sql+' from money group by code'exec(@sql)

但显示的结果却是
code 10月 11月 12月
000100010001 45.0 45.0 45.0
000100020001 60.0 60.0 60.0

请问怎么修改这条语句

------解决思路----------------------
declare @sql varchar(2000)
set @sql = 'select code'
select @sql = @sql + ',sum(case MONTH(date) when '''+CAST(number AS VARCHAR(10))+''' then useNum end) ['+CAST(number AS VARCHAR(10))+'月]'
from master..spt_values
WHERE type='P'AND number>0 AND number<=12
SET @sql = @sql+' from money group by code,YEAR(date)'
PRINT @sql
exec(@sql)
  相关解决方案