2012-04-27 22 views
5

私は、現在の会計年度の開始日まで振り返って設定された約50,000レコードの情報を含むテーブルを持っています。月ごとのフィールドを合計で動的に合計する

それは私がそう現在そこにあるデータは、我々はまだ2011年

ノート(私はデータを更新するとき、そこに意志にまでさかのぼる4月1日のように振り返っていると仮定先月からこのテーブルを更新していない現状では私たちは4月に今あるとしてそこでは2012年4月のデータのみになり、その後、月にそれは2012年4月と2012年5月を持っているように...します)

各レコードは、私はと心配4つの列があります。

Department, 
Incident date, 
month, 
year, 
reduced 

月と年の両方の列が、 I和減少したが、累積的様式で、各部門のために必要

2011-06-29 00:00:00.000 

:このフォーマットである入射日付フィールドはmです。

たとえば、2011年4月のように見えるのは、私が今のところ持っている最も早い月/年のデータになります。その後

月のために私は、4月&を組み合わせかもしれたい6月のために私は上の4月、月、6月とを必要とする...

はそのようにすぐに私はにデータを再インポートとしてこれを行うには、インテリジェントな方法はありますこの表には、それだけで一ヶ月、今があることを実感してます年が更新されたその意志のために今、来月には、のみ(縮小)4月の合計

+0

'事件date'フィールドの型は何ですか?日付時刻? varchar? –

+0

@マークバイヤーズdatetime – JsonStatham

+0

@SelectDistinctここで見て: - http://stackoverflow.com/questions/2120544/how-to-get-cumulative-sum –

答えて

1
select t1.id, t1.singlenum, SUM(t2.singlenum) as sum 

    from @t t1 inner join @t t2 on t1.id >= t2.id 
    group by t1.id, t1.singlenum 
    order by t1.id 
1

以下はDepartmentYearMonthによってグループ化された累積合計を返しますが表示されるまで、 。前回の課税年度のデータを消去する場合は、リフレッシュするときにWHERE句を省略することができます。

SELECT  T1.[Year], 
      T1.[Month], 
      T1.Department, 
      SUM(T2.Reduced) ReducedTotals 
FROM  [TABLENAME] T1 
INNER JOIN [TABLENAME] T2 ON (T1.Department = T2.Department AND T1.IncidentDate >= T2.IncidentDate) 
WHERE  T1.IncidentDate >= '2012-04-01' 
GROUP BY T1.[Year], 
      T1.[Month], 
      T1.Department 
ORDER BY T1.[Year], 
      T1.[Month], 
      T1.Department 
+3

リモートでたくさんのレコードで作業している場合は、コメント欄にリンクされている他の回答を調べることをお勧めします。どんなに妥当な量であれ、このようなハーフ・カートシェル製品は非常に遅く、そのためにもカーソルが早くなることがあります。 * [しかし、これは働くことに注意してください:]] * – MatBailie

関連する問題