您的位置:首页 > 数据库 > Oracle

oracle下lag和lead分析函数

2015-11-19 17:01 477 查看
Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead)作为独立的列。

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

语法:

[sql] view plaincopy

/*语法*/

lag(exp_str,offset,defval) over()

Lead(exp_str,offset,defval) over()

--exp_str要取的列

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

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

1.

[sql] view plaincopy

/*基础数据*/

select t.* from test1 t;



2.

[sql] view plaincopy

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

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

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

from TEST1 t;



3.

[sql] view plaincopy

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

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

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

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: