如果你想要计算运行总和,它会很容易使用分析函数来执行:
with d as (
select 1 as sr, cast(null as number) as value_one from dual union all
select 2 as sr, 1 as value_one from dual union all
select 3 as sr, 0.75 as value_one from dual union all
select 4 as sr, 0.75 as value_one from dual union all
select 5 as sr, 1 as value_one from dual union all
select 6 as sr, 1 as value_one from dual union all
select 7 as sr, 1 as value_one from dual union all
select 8 as sr, 1 as value_one from dual union all
select 9 as sr, 1 as value_one from dual union all
select 10 as sr, 1 as value_one from dual
)
select d.*, sum(nvl(value_one, 0.99)) over (order by sr)
from d;
不幸的是,没有“产品”聚合功能,我们可以在这里使用,所以我们要绕道使用EXP和LN(见https://stackoverflow.com/a/3912248/1230592):
with d as (
select 1 as sr, cast(null as number) as value_one from dual union all
select 2 as sr, 1 as value_one from dual union all
..
)
select d.*, nvl(exp (sum (ln (value_one)) over (order by sr)), 1) * 0.99
from d;
这应该给你所期望的结果[未得到充分系列多
可能重复(产品)在CONNECT-BY查询](http://stackoverflow.com/questions/27955093/not-getting-full-series-multiplication-product-in-connect-by-query) – Noel 2015-04-01 07:48:59
不是重复的,函数在链接上累积相乘结果 – szakwani 2015-04-01 08:45:04