我有一列具有以下值
Week Value
0 83
1 0
2 1
3 4
4 0
5 9
我需要结果作为
Week Value Remaining
0 83 83
1 0 83
2 1 82
3 4 78
4 0 78
5 9 69
如何在 Oracle SQL 查询中执行此操作。我知道我可以在 PL/SQL 中实现这一点,但我想在选择查询中实现这一点。有人可以帮我吗?
您可以使用累积总和来执行此操作:
select t.*,
(max(case when week = 0 then value end) over () -
coalesce(sum(case when week > 0 then value end) over (order by week), 0)
) as remaining
from t;
我认为你不应该把第0周当作特别的东西。 请改用正值和负值。 然后你可以做:
select t.*,
sum(value) over (order by week) as remaining
from t;