如何在Oracle sql

时间:2017-10-20 09:52:36

标签: sql oracle oracle-sqldeveloper running-total

我的列数值低于

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查询中实现这一点。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您可以使用累计金额执行此操作:

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;