表的数据如下用户名    开始时间         结束时间       总金额
李捷      2014-2-15      2014-8-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    0
张剑      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 

解决方案 »

  1.   

    总觉得你的均摊不严紧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
      

  2.   

    我的意思只是,如果
    李捷      2014-2-28      2014-8-14    150
    这种情况也均摊到2月吗~~有啥问题引用我的回复,我看得到