解决方案 »

  1.   

    可以用到rownum来处理,至于你说的有用到其他的上一条的记录,你可以将上一条记录的值加入的公式中就行了
      

  2.   

    或者在视图内能用游标吗 查询出数据集 通过游标逐条处理  能达到LZ的效果吗  有熟悉的帮忙解答下 贴出视图内用游标处理数据集的sql DEMO  感谢!
      

  3.   

    视图内怎么用游标。除非你用存储过程,我觉得还是从你的公式入手,想办法让公式使用到rownum,因为rownum可以作为变量来使用
      

  4.   


     你的意思是 通过ROWNUM 以第一条为基数  后面的都按照第一条计算吗? 
    eg: 第五条的时候 我是通过第四条的值乘除第五条的值来计算  第四条是通过第三条,当然最终都是通过第一条来计算出来的,这样也能满足吗还有更好的处理方式吗
      

  5.   

    是否可以考虑在数据库中把计算的公式做成函数
    然后再select 的时候调用函数
      

  6.   

     
    这样的话需要往函数里传值 ,取值的时候还是得通过函数 不通过函数的话 取到的上一条会是0 通过函数的话是死循环了吧。
    这是某一列的公式:(X5*U5+C6*F6)/(F6+X5) 带5的是上一行列数据 带6的是当前行列数据
      

  7.   


     你的意思是 通过ROWNUM 以第一条为基数  后面的都按照第一条计算吗? 
    eg: 第五条的时候 我是通过第四条的值乘除第五条的值来计算  第四条是通过第三条,当然最终都是通过第一条来计算出来的,这样也能满足吗还有更好的处理方式吗
    对,只要是看你的公式是怎么样的
      

  8.   

    谢谢大家 最终按照 写函数 传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;