如何在Oracle sql中减少运行总数



我有一列具有以下值

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;

相关内容

  • 没有找到相关文章

最新更新