2010/02/02

Over / Partition 累計


x    y             取得累計數,依據x群組重新計算
-----------
A   100  --> 100
A   200  --> 300 
A   300  --> 600 
B   200  --> 200 
B   400  --> 600 


SELECT x, SUM(y) OVER (PARTITION BY x ORDER BY x,y)
FROM demo 
ORDER BY x,y

結論  :  某些情況下,直接在SQL下取得累計數是必須的, 
例 : Reporting Service 取得累計後無法在累計數量上做其他判斷 (First / Last / Count ...) , 
此時將SQL直接帶入就解決了
另 SUM 改為其他匯總函數也是可以的, 
例 : Count(y) OVER (PARTITION BY x ORDER BY x,y),其用途再累計x群組的累計筆數

沒有留言: