答案 0 :(得分:1)
您也可以使用窗口功能编写该代码。
SELECT
Year,
SUM(Profit) OVER(ORDER BY Year) AS Total_Profit
FROM your_table
ORDER BY Year
答案 1 :(得分:0)
这可能是您可以谷歌搜索的世界上最简单的递归CTE。 但是这里是:
declare @years table(y int, p int)
insert @years values (2015,1000),(2016,2000),(2017,500),(2018,1000)
; with cumulative as
(
select top 1 * from @years order by y
union all
select y.y, y.p+c.p
from @years y
join cumulative c on y.y=c.y+1
)
select * from cumulative
结果:
y p
2015 1000
2016 3000
2017 3500
2018 4500
答案 2 :(得分:0)
在分区上使用总和:
WITH V1 AS (
SELECT 2015 AS YEAR, 1000 AS PROFIT FROM DUAL
UNION ALL SELECT 2016 AS YEAR, 2000 AS PROFIT FROM DUAL
UNION ALL SELECT 2017 AS YEAR, 500 AS PROFIT FROM DUAL
UNION ALL SELECT 2018 AS YEAR, 1000 AS PROFIT FROM DUAL
)
SELECT
V1.YEAR
, PROFIT --- You can comment it if not needed
, SUM(PROFIT) OVER (PARTITION BY 1 ORDER BY YEAR RANGE UNBOUNDED PRECEDING) AS PROFIT_CUM
FROM V1;