2016-09-26 101 views
0

我想在MS Access中計算12個月的運行總數。在Oracle SQL中,我將使用窗口函數來實現此功能,如MS Access - 運行12個月的總計

SELECT date, SUM(salesvol) OVER (ORDER BY date ROWS 11 PRECEDING) AS running_tot FROM table1 

但顯然MS Access不支持窗口功能。我最初的想法是使用datediff函數編寫查詢,但因爲我的日期變量是varchar格式,所以我認爲這不是一個切實可行的方法。

我的數據集由兩列組成:日期(VARCHAR)和salesvol(NUMBER):

date salesvol 
200901 473560 
200902 426204 
200903 473560 
200904 662984 
200905 473560 
200906 662984 
200907 615628 
200908 236780 
200909 426204 
200910 331492 
200911 426204 
200912 378848 
201001 236780 
201002 426204 
201003 426204 
201004 142068 
201005 426204 
201006 520916 
201007 568272 
201008 520916 
201009 520916 
201010 520916 
201011 568272 
201012 947120 

我的期望的輸出是這樣的:

date salesvol  running_tot 
200901 473560 473560 
200902 426204 899764 
200903 473560 1373324 
200904 662984 2036308 
200905 473560 2509868 
200906 662984 3172852 
200907 615628 3788480 
200908 236780 4025260 
200909 426204 4451464 
200910 331492 4782956 
200911 426204 5209160 
200912 378848 5588008 
201001 236780 5351228 
201002 426204 5351228 
201003 426204 5303872 
201004 142068 4782956 
201005 426204 4735600 
201006 520916 4593532 
201007 568272 4546176 
201008 520916 4830312 
201009 520916 4925024 
201010 520916 5114448 
201011 568272 5256516 
201012 947120 5824788 

回答

0

轉換將varchar日期日期格式。您可以將日期用作該月的第一天。請參閱link進行轉換。

然後您可以參考link以獲得跑步總數。

+0

我猜你錯過了這是Access。 – Gustav

+0

您可以使用以下表達式將其轉換爲Date:'CDate(Format(「200910」,「@@@@/@@」))'但實際上你不需要這樣做,因爲像「200910」等字符串是完美的可分類的_as is_。 – Gustav