繁体   English   中英

使用星期和月份技巧SQL按日期计算SUM

[英]Calculate SUM by date with week and month trick SQL

我要达到的目标是按周计算我在邮件表中输入的统计信息<,但是我需要显示有关月份/的统计信息

例如表中我有这个

 '20130226',    312.00
 '20130305',    833.00

结束于20130305的一周,2月有2天,3月有5天。 我正在努力实现:

2013-02-28  550.000000
2013-03-31  2285.000000

我有这个查询:

    CREATE TABLE #Old
    (
    Weeks DATE,
    summ NUMERIC (12,6)    
)
        INSERT INTO #Old VALUES  ( '20130226',  312.00)
        INSERT INTO #Old VALUES  ( '20130305',  833.00)
        INSERT INTO #Old VALUES  ( '20130312',  225.00)
        INSERT INTO #Old VALUES  ( '20130319',  453.00)
        INSERT INTO #Old VALUES  ( '20130326',  774.00) 



 SELECT  
    EOMONTH ( Weeks  )
    , sum (summ)  as cumesum
    FROM  #Old
    GROUP BY  EOMONTH ( Weeks  )

我知道这是不对的,因为它在两个月内没有将那一周拆分,但不知道如何实现。

如果我的理解正确,您想按月分配每周数字。 一种方法是在当月和上个月之间拆分数据-对值进行算术分配。

剩下的只是聚合:

select EOMonth(weeks), sum(month_summ)
from ((select weeks, year(weeks) as yy, month(weeks) as mm,
              (case when day(weeks) >= 7 then summ
                    else summ * day(weeks) / 7.0
               end) as month_summ
       from #old o
      ) union all
      (select dateadd(month, -1, weeks) as weeks,
              year(dateadd(month, -1, weeks)) as yy,
              month(dateadd(month, -1, weeks)) as mm,
              summ * (1 - day(weeks) / 7.0)
       from #old o
       where day(weeks) < 7
      )
     )
group by EOMonth(weeks);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM