我需要比较当前行和上一行,并根据某些比较需要派生列值。目前apporach我正在制作两个不同的记录集,然后使用排名功能,然后通过加入排名功能,我能够解决这个问题。然而,这似乎是乏味的工作,是否有更好的方法来实现这一目标。我目前正在编写类似下面的查询: -
select
< comparing columns from two record sets and deriving column value>
(
select(<some complex logic>, rank from a) rcdset,
(select <some complex logic>, rank +1 from a) rcdset2 where rcdset.rnk = rcdset1.rnk (+)
数据库 - Oracle 10g
答案 0 :(得分:1)
使用LAG(value_expr) OVER (ORDER BY rank_col)
检索上一行的值(value_expr)(由rank_col定义的顺序),请参阅http://oracle-base.com/articles/misc/lag-lead-analytic-functions.php