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 ) 即可實現以上功能