加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle-分析函数之取上下行数据lag()和lead()

发布时间:2020-12-12 14:00:50 所属栏目:百科 来源:网络整理
导读:https://www.2cto.com/database/201611/562166.html 概述 ORACLE函数系列: Oracle常见函数大全 Oracle-分析函数之连续求和sum(…) over(…) Oracle-分析函数之排序值rank()和dense_rank() Oracle-分析函数之排序后顺序号row_number() Oracle-分析函数之取上
1 lag(EXPR,<offset>,<default>)</></offset> LEAD(EXPR,monospace;font-size:1em;min-height:auto;color:#000000;">></offset>

【功能】表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后的顺序编号(组内连续的唯一的)

lead () 下一个值 lag() 上一个值

【参数】

EXPR是从其他行返回的表达式 OFFSET是缺省为1 的正数,表示相对行数。希望检索的当前行分区的偏移量 DEFAULT是在OFFSET表示的数目超出了分组的范围时返回的值。

exp_str 是要做对比的字段
offset 是exp_str字段的偏移量 比如说 offset 为2 则 拿exp_str的第一行和第三行对比,第二行和第四行,依次类推,offset的默认值为1!

【说明】Oracle分析函数


栗子

1 2 3 4 5 6 createtableLEAD_TABLE(CASEID VARCHAR2(10),STEPID VARCHAR2(10),ACTIONDATE DATE) ? 6 7 8 9 10 11 12 insertintoLEAD_TABLE values('Case1','Step1''20161101''yyyy-mm-dd'));'Step2''20161102'));'Step3''20161103'));'Step4''20161104'));'Step5''20161105'));'20161106'));'Step6''20161107'));'20161201'));'Case2''20161202'));'20161203'));commit;

数据规格:

输出当前 和 之前 之后的date 和 step

? 9 selecta.caseid,a.stepid ascurrentStepID,monospace;font-size:1em;min-height:auto;color:#000000;">a.actiondate currentActionDate,monospace;font-size:1em;min-height:auto;color:#000000;">lead(stepid) over(partition bya.caseid ordera.stepid) nextStep,lead(actiondate) over(partition a.stepid) nextActionDate,lag(stepid) over(partition a.stepid) preStep,lag(actiondate) over(partition a.stepid) preActionDatefromlead_table a ;

进一步统计一下两者的相差天数

12 13 selectcaseid,stepid,monospace;font-size:1em;min-height:auto;color:#000000;">actiondate,monospace;font-size:1em;min-height:auto;color:#000000;">nextactiondate,monospace;font-size:1em;min-height:auto;color:#000000;">nextactiondate - actiondate datebetween(caseid actiondate) nextstepid,actiondate) nextactiondate,actiondate) prestepid,actiondate) preactiondatelead_table) ;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

https://www.2cto.com/database/201611/562166.html

概述

ORACLE函数系列:

Oracle常见函数大全

Oracle-分析函数之连续求和sum(…) over(…)

Oracle-分析函数之排序值rank()和dense_rank()

Oracle-分析函数之排序后顺序号row_number()

Oracle-分析函数之取上下行数据lag()和lead()


这两个函数是偏移量函数,可以查出一个字段的上一个值或者下一个值,配合over来使用。

lead函数,这个函数是向上偏移.
lag函数是向下偏移一位.

语法

【语法】

?
    推荐文章
      热点阅读