我真的需要接受CTE的結果,並計算出數據組的累積值。TSQL-2008 SUM(X)OVER(PARTITION ... ORDER BY CLAUSE)
數據集是:
PERIOD FT GROUP DEPT VALUE
1 Actual KINDER MATH 200
2 Actual KINDER MATH 363
3 Actual KINDER MATH 366
1 Budget KINDER MATH 457
2 Budget KINDER MATH 60
3 Budget KINDER MATH 158
1 Actual HIGHSCH ENGLISH 456
2 Actual HIGHSCH ENGLISH 745
3 Actual HIGHSCH ENGLISH 125
1 Budget HIGHSCH ENGLISH 364
2 Budget HIGHSCH ENGLISH 158
3 Budget HIGHSCH ENGLISH 200
6 Budget HIGHSCH ENGLISH 502
7 Budget HIGHSCH ENGLISH 650
1 Actual COLL ENGLISH 700
2 Actual COLL ENGLISH 540
3 Actual COLL ENGLISH 160
1 Budget COLL ENGLISH 820
2 Budget COLL ENGLISH 630
3 Budget COLL ENGLISH 800
我要的是一個包含累積性量爲每FT,集團,系
所以基本上,我想它看起來像這樣的附加列:
PERIOD FT GROUP DEPT VALUE ACC VALUE
1 Actual KINDER MATH 200 200
2 Actual KINDER MATH 363 563
3 Actual KINDER MATH 366 929
1 Budget KINDER MATH 457 457
2 Budget KINDER MATH 60 517
3 Budget KINDER MATH 158 675
1 Actual HIGHSCH ENGLISH 456 456
2 Actual HIGHSCH ENGLISH 745 1201
3 Actual HIGHSCH ENGLISH 125 1326
1 Budget HIGHSCH ENGLISH 364 364
2 Budget HIGHSCH ENGLISH 158 522
3 Budget HIGHSCH ENGLISH 200 722
1 Budget HIGHSCH ENGLISH 502 502
2 Budget HIGHSCH ENGLISH 650 1152
3 Budget HIGHSCH ENGLISH 336 1488
1 Actual COLL ENGLISH 700 700
2 Actual COLL ENGLISH 540 1240
3 Actual COLL ENGLISH 160 1400
1 Budget COLL ENGLISH 820 820
2 Budget COLL ENGLISH 630 1450
3 Budget COLL ENGLISH 800 2250
如果我是在2012年SQL,我會使用類似這樣:
SELECT period
,ft
,group
,dept
,value
,CASE
WHEN FT = 'Actual' THEN SUM(value) OVER (PARTITION BY dept, group, ft ORDER BY period)
ELSE value
END AS AccValue
FROM myTable
但是,我在2008年,不能使用這種方法,並難以對如何複製這些數據。
請任何人都可以幫忙嗎?
爲什麼你不能在2008年複製這個?自2005年以來,「OVER」已經出現了。 – Kermit
不僅僅是「over」... over.PARTITION BY和ORDER BY合計。我試了一下,每次都在訂單上出錯。在網上查看它說它不是2008年的一個功能。 –
@FreshPrinceOfSO - 總計運行總計等的ORDER BY'是2012+ –