我正在做一個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