我想要实现的是计算一些统计数据如何按周计算邮件表中的数据<但我需要显示月份/
的统计数据例如在表格中我有这个
'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 )
我知道它不对,因为它在两个月内没有分裂,但却没有想法如何实现它。
答案 0 :(得分:1)
如果我理解正确,您希望按月分配每周数字。一种方法是在当前月份和上个月之间拆分数据 - 将值作为算术进行分配。
其余的只是聚合:
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);