【问题标题】:Get next row of cursor in a loop without moving the index of cursor in PL/SQL在循环中获取下一行游标而不在 PL/SQL 中移动游标的索引
【发布时间】:2020-07-09 11:10:21
【问题描述】:

我正在处理 Oracle 程序,我必须计算两行之间的时间差 时间在光标中显示为列。 为此,我将不得不遍历游标并获取当前行和下一行并计算时间差。 我怎样才能在循环中做到这一点? 如何在不移动光标的情况下获得下一行光标?

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    如果游标的列中存在时间,则可以在游标中再添加一列并使用lead 填充下一行时间,如下所示:

    -- YOUR CURSOR QUERY EXAMPLE
    SELECT COL1, TIME_COL FROM .....
    
    --yOU NEED TO ADD ONE MORE COLUMN
    SELECT COL1, TIME_COL, LEAD(TIME_COL) OVER (PARTITION BY ... ORDER BY ...) FROM ...
    

    您可以通过good source 了解更多关于 LEAD 的信息

    【讨论】:

    • 是的.. 这就是我所需要的我对如何在我的案例中使用铅感到困惑,但您提供的链接说明了谢谢
    【解决方案2】:

    使用分析函数 n lag(col) over(order by... ) 或 lead(col) over(order by...) 更容易

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 2012-03-27
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多