如何在Oracle中SQL
问题描述:
降低运行总我有一栏下面值如何在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;
感谢@gordon,它的工作:) – bharath
不幸的是,值不正面和负面的..和SUM(值)在本周将得到提高运行总量。 – bharath
我在上面的同一个查询中增加了一个场景。任何关于解决方案的想法都一样吗? – bharath