首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

高手一个按月统计合同金额有关问题

2012-02-15 
请教各位高手一个按月统计合同金额问题表ContractInfo:合同名称ContractName支付日期PayTime(格式为2007-0

请教各位高手一个按月统计合同金额问题
表ContractInfo:
合同名称   ContractName
支付日期   PayTime(格式为2007-08-22)
支付金额   PayMoney
如何实现按月显示支付金额?显示列表如下:

合同名称   1月(金额)   2月(金额)……12月(金额)

[解决办法]
考虑年份.

declare @sql varchar(8000)
set @sql = 'select ContractName as ' + '合同名称 '
select @sql = @sql + ' , sum(case left(convert(varchar(10),支付日期,120),6) when ' ' ' + left(convert(varchar(10),支付日期,120),6) + ' ' ' then PayMoney else 0 end) [ ' + left(convert(varchar(10),支付日期,120),6) + '] '
from (select distinct left(convert(varchar(10),支付日期,120),6) from ContractInfo) as a
set @sql = @sql + ' from ContractInfo group by ContractName '
exec(@sql)
[解决办法]
我写的就是考虑了年份啊,不是2007年么?哪里有问题?
[解决办法]
select year(PayTime) 年份,合同名称,
[1月(金额)]=sum(case when month(paytime)=1 then PayMoney else 0 end),
[2月(金额)]=sum(case when month(paytime)=2 then PayMoney else 0 end),
...
[12月(金额)]=sum(case when month(paytime)=12 then PayMoney else 0 end)
from ContractInfo
group by year(PayTime),合同名称

热点排行