谢谢大家 最终按照 写函数 传rownum的方法来实现 CREATE OR REPLACE FUNCTION xx6(num1 IN number) RETURN number IS LN_x6 NUMBER;BEGIN for i in (select* from aaabak where rn<=num1) loop --F6+X5-Q6 if i.rn=0 then LN_x6:=i.x6; else LN_x6:= i.f6+ LN_x6-i.q6; end if; end loop; RETURN LN_x6;END xx6;
你的意思是 通过ROWNUM 以第一条为基数 后面的都按照第一条计算吗?
eg: 第五条的时候 我是通过第四条的值乘除第五条的值来计算 第四条是通过第三条,当然最终都是通过第一条来计算出来的,这样也能满足吗还有更好的处理方式吗
然后再select 的时候调用函数
这样的话需要往函数里传值 ,取值的时候还是得通过函数 不通过函数的话 取到的上一条会是0 通过函数的话是死循环了吧。
这是某一列的公式:(X5*U5+C6*F6)/(F6+X5) 带5的是上一行列数据 带6的是当前行列数据
你的意思是 通过ROWNUM 以第一条为基数 后面的都按照第一条计算吗?
eg: 第五条的时候 我是通过第四条的值乘除第五条的值来计算 第四条是通过第三条,当然最终都是通过第一条来计算出来的,这样也能满足吗还有更好的处理方式吗
对,只要是看你的公式是怎么样的
CREATE OR REPLACE FUNCTION xx6(num1 IN number)
RETURN number IS
LN_x6 NUMBER;BEGIN
for i in (select* from aaabak where rn<=num1) loop
--F6+X5-Q6
if i.rn=0 then
LN_x6:=i.x6;
else
LN_x6:= i.f6+ LN_x6-i.q6;
end if;
end loop;
RETURN LN_x6;END xx6;