2012-04-27 73 views
5

我有一張表,其中包含大約50,000條信息記錄,該記錄已設置爲回溯至當前財政年度的開始時間。累計和動態地累計每個月的一個字段

目前的情況是我自上個月所以目前在那裏的數據假設我們仍在尋找回來,早在4月1日2011年

音符(當我刷新數據,將有沒有更新此表只有在有2012年4月的數據,因爲我們現在是四月,當年5月將有2012年4月和2012年5月等等...)

每個記錄有4列,我關心的是:

Department, 
Incident date, 
month, 
year, 
reduced 

月份和年份列已經生成米事件發生日期場是這種格式:

2011-06-29 00:00:00.000 

我需要爲每個部門,總結了減少,但在累積的方式。

例如,雖然2011年4月將是我目前最早的月/年數據,但我想知道每個部門4月份的總數減少情況。

那麼對於五月我想四月&可能組合,六月我需要四月,五月,六月等...

當我重新導入數據到是否有這樣做,這樣一種智能的方式此表將認識到,現在只有一個月,今年已經更新,並於即日起至下月只顯示四月份的總和(減少)

+0

什麼是'事件date'字段的類型?約會時間? VARCHAR? – 2012-04-27 14:48:05

+0

@Mark Byers datetime – JsonStatham 2012-04-27 14:53:45

+0

@SelectDistinct看看這裏: - http://stackoverflow.com/questions/2120544/how-to-get-cumulative-sum – 2012-04-27 15:00:54

回答

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 2012-04-27 15:15:18