lag和lead函数使用方法

今天我们晓东同学给我介绍了一个Oracle非常好用的函数使用方法

lag和lead函数

先举个例子,我们的主键id是自增的。但是有些地方不连续,你们我们应该怎么找出来呢

我们就可以使用lead函数来实现

lead(field, num, defaultvalue)

field需要查找的字段,

num往后查找的num行的数据,

defaultvalue没有符合条件的默认值。


如我们主键是如下主键

1 2 3 4 5

lead(字段,1,99)

此时查询出来的结果是  2 3 4 5 99


衍生sql举例

select * from (select t.audit_id,lag(t.audit_id,1,36) over (order by t.audit_id) as aid from SF_AUDIT t order by t.audit_id) where aid=36

上面的sql查询出的结果可能是

1    2

2    3

3    36


如果不连续,我们只需要在外面在包一层查询,查询出后一个减去前一个大于1的数据即为不连续的,正常情况下应该等于1


最后我们使用lag函数试试,lag函数与lead函数用法类似,只是lead是后移,而lag是迁移

上面的sql如果使用lag来运行,其结果为如下结果


3    2

2    1

1    36



爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img