请教各位高手一个按月统计合同金额问题
表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),合同名称