2012-03-20 15 views
1

レポートの下部に毎日、毎月、毎年の合計が表示されているSQL Serverレポートを実行しています。SQL Server - 合計月/年を合計する

"timestamp"フィールドとgetdate()の日付を取得し、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())) 

編集:ほとんどのスパンを含むグループの一般的なソート--as

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) 
+0

あなたのテーブル構造は何ですか? –

+0

timestampはdatetime、trayはint、RC0〜RC40はintです – TWood

+0

私は月ごとの合計ではなく、過去30日間の合計を暦月ではないと仮定していますか?そして、あなたは40列すべての合計が欲しいですか? – hkf

答えて

1

私に同じ結果を与えているクエリの別の形式....

SELECT 'Year' = DATEPART(Yy、r owdate)、 '月' = DATEPART(MM、rowdate)、 ウィーク '= DATEPART(週、rowdate)、 'トータル'=合計(yournumericfield)sometable

グループから

DATEPART BY DATEPART(YY、rowdate)、 DATEPART(MM、rowdate)、 DATEPART(週、rowdate)BY(YY、rowdate)、 DATEPART(MM、rowdate)、 DATEPART(週、rowdate)

ORDER