開窗函數 SUM() OVER()


 

  SQL 測試表腳本  

 1 DECLARE @Temp Table
 2 (
 3   ID INT, --- 月份
 4   MoneyData Float  --- 金額 
 5 )
 6  
 7 insert  INTO @TEMP
 8 SELECT 1,100 UNION ALL
 9 SELECT  2,200 UNION ALL
10 SELECT  3,300 UNION ALL
11 SELECT  4,400 UNION ALL
12 SELECT  5,500 UNION ALL
13 SELECT  6,600 UNION ALL
14 SELECT  7,600

 一 自連接

1 SELECT  A.ID, SUM(B.MoneyData)  FROM @Temp A INNER JOIN @Temp B
2 ON A.ID>=B.ID GROUP BY A.ID
3 ---- 重點在於 ON 條件,通過自連接 A.ID >= B.ID ,可獲取所需數據,再通過GROUP BY 、SUM 即可統計求和

二 開窗函數

1 SELECT  ID, MoneyData,   SUM(MoneyData) OVER( ) AS '總銷售額',
2 SUM(MoneyData) OVER( PARTITION BY ID ) AS '月銷售額',
3 SUM(MoneyData) OVER( ORDER BY ID ASC)  AS '當月+當月前銷售額'
4 FROM @Temp
5 ---- 此處,使用開窗函數使用更為簡單,不過,其中 SUM() OVER ( ORDER BY ID ASC ) 即可實現以上功能

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM