专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Oracle中lag和lead函数的用法 oracle lead函数

ins518 2024-10-25 14:24:32 技术文章 14 ℃ 0 评论

lag和lead函数属于oracle中的分析统计函数,语法如下:

/*语法*/

lag(exp_str,offset,defval) over()

lead(exp_str,offset,defval) over()

--exp_str要取的列

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

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

举个栗子:

比如先创建一个表A

create table A(

id varchar(32) primary key,

taskid varchar(10),

credate varchar(10)

);

再往里面插入数据

insert into A values('001','taskid1','2017-06-14');

insert into A values('002','taskid2','2017-06-15');

insert into A values('003','taskid3','2017-06-16');

insert into A values('004','taskid4','2017-06-17');

我们先按照时间从小到大排序查询一下

现在如果我要统计按照时间从小到大排序的taskid所对于的上面一行的taskid和下面一行的taskid就可以用到lag和lead函数了,sql如下

select id,taskid,lag(taskid,1,null) over(order by credate) as pretaskid,

lead(taskid,1,null) over(order by credate) as nexttaskid,credate from A;

查询到的结果如下:

由于taskid1的那一行是第一行数据,所以pretaskid为空,taskid4是最后一行,nexttaskid为空

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表