我正在做一个sql server报告,显示报告底部的每日,每月和每年总计。sql server - 在一个月/年内总结总数
我想通过采用“timestamp”字段和getdate()的返回日期并返回= 0的行来完成每日报表。通过这种方式,我知道日期的差异为0天,因此部分的每日总数。
我遇到了一个问题,关于一个很好的方法来做到这一点与月和年。这里是我对月计算的查询,它给了我更多的结果比它应该(我有另一张表,我用来仔细检查我的计算。我应该得到大约300作为我的总数,但下面的查询给了我关于7400,而不是只是一个小关)
SELECT SUM(Rc0) AS Good,
SUM(Rc0 + Rc1 + Rc2 + Rc3 + Rc4 + Rc5 + Rc6 + Rc7 + Rc8 + Rc9 + Rc10 + Rc11 + Rc12 + Rc13 + Rc14 + Rc15 + Rc16 + Rc17 + Rc18 + Rc19 + Rc20 + Rc21 + Rc22 + Rc23
+ Rc24 + Rc25 + Rc26 + Rc27 + Rc28 + Rc29 + Rc30 + Rc31 + Rc32 + Rc33 + Rc34 + Rc35 + Rc36 + Rc37 + Rc38 + Rc39 + Rc40) AS Not_Good
FROM someTable WHERE (MONTH(timestamp) = MONTH(GETDATE())) and (YEAR(timestamp) = YEAR(GETDATE()))
编辑:查询是给我同样的结果
SELECT SUM(Rc0) AS Good,
SUM(Rc0 + Rc1 + Rc2 + Rc3 + Rc4 + Rc5 + Rc6 + Rc7 + Rc8 + Rc9 + Rc10 + Rc11 + Rc12 + Rc13 + Rc14 + Rc15 + Rc16 + Rc17 + Rc18 + Rc19 + Rc20 + Rc21 + Rc22 + Rc23
+ Rc24 + Rc25 + Rc26 + Rc27 + Rc28 + Rc29 + Rc30 + Rc31 + Rc32 + Rc33 + Rc34 + Rc35 + Rc36 + Rc37 + Rc38 + Rc39 + Rc40) AS Not_Good
FROM someTable
WHERE convert(varchar(7), timestamp, 126) = convert(varchar(7), getdate(), 126)
你的表格结构是什么? – 2012-03-20 22:03:48
时间戳是日期时间,托盘是int,RC0 - RC40是int – TWood 2012-03-20 22:07:13
我假设您想要将最近30天的运行总计作为月度总计,而不是日历月?你想要所有40列的总和? – hkf 2012-03-20 22:12:23