表的数据如下
用户名 开始时间 结束时间 总金额
李捷 2014-2-15 2014-7-14 150
张剑 2014-5-20 2014-6-19 25
吴勇金 2014-1-15 2014-3-14 50
能不能根据用户的开始时间将费用平均分摊到使用的每一个月
用户名 开始时间 结束时间 总金额 1月 2月 3月 4月 5月 6月 7月 8月
李捷 2014-2-15 2014-8-14 150 0 25 25 25 25 25 25 25
张剑 2014-5-20 2014-6-19 25 0 0 0 0 25 0 0 0
吴勇金 2014-1-15 2014-3-14 50 25 25 0 0 0 0 0 0
------解决思路----------------------
总觉得你的均摊不严紧
SELECT 用户名,开始时间,结束时间,总金额
,CASE WHEN 1 BETWEEN StartMonth AND EndMonth THEN AvgMonty END[1月]
,CASE WHEN 2 BETWEEN StartMonth AND EndMonth THEN AvgMonty END[2月]
,CASE WHEN 3 BETWEEN StartMonth AND EndMonth THEN AvgMonty END[3月]
,CASE WHEN 4 BETWEEN StartMonth AND EndMonth THEN AvgMonty END[4月]
,CASE WHEN 5 BETWEEN StartMonth AND EndMonth THEN AvgMonty END[5月]
,CASE WHEN 6 BETWEEN StartMonth AND EndMonth THEN AvgMonty END[6月]
,CASE WHEN 7 BETWEEN StartMonth AND EndMonth THEN AvgMonty END[7月]
,CASE WHEN 8 BETWEEN StartMonth AND EndMonth THEN AvgMonty END[8月]
FROM(
SELECT *
,DATEPART(MONTH,开始时间)StartMonth
,CASE WHEN DATEDIFF(MONTH,开始时间,结束时间)=0 THEN MONTH(结束时间)
ELSE DATEPART(MONTH,结束时间)-1 END EndMonth
,总金额/CASE WHEN DATEDIFF(MONTH,开始时间,结束时间)=0 THEN 1
ELSE DATEDIFF(MONTH,开始时间,结束时间)END AvgMonty
FROM TB
)T