oracle下lag和lead分析函数

Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead)作为独立的列。

这种操作可以代替表的自联接,并且LAG和LEAD有更高的效率。

语法:

 
  1. /*语法*/

  2. lag(exp_str,offset,defval) over()

  3. Lead(exp_str,offset,defval) over()

  4. --exp_str要取的列

  5. --offset取偏移后的第几行数据

  6. --defval:没有符合条件的默认值

1.

 
  1. /*基础数据*/

  2. select t.* from test1 t;

2.

 
  1. /*用lag,lead分析以后的数据*/

  2. select t.id, lag(t.name,1,0) over(order by id desc) max_v, t.name,

  3. lead(t.name,1,0) over(order by id desc) min_v

  4. from TEST1 t;

3.

 
  1. /*满足查询结果的数据*/

  2. select i.* from(select t.id, lag(t.name,1,0) over(order by id desc) max_v, t.name,

  3. lead(t.name,1,0) over(order by id desc) min_v

  4. from TEST1 t) i where i.name='3aa';

可以用于查询下一条数据

猜你喜欢

转载自blog.csdn.net/qq_24521431/article/details/81480139