Oracle

    开发中经常用到当前行数据需要和临近行数据进行逻辑处理,这时跨行引用就派上了用场,注意以下结果中PREV_SAL的值:

1--LAG分析函数,延后取数,在不使用自联接的情况下同时提供对表的多行数据的访问 2SELECT hire_date, last_name, salary, 3 LAG(salary, 1, 0) OVER (ORDER BY hire_date) AS prev_sal 4 FROM employees 5 WHERE job_id = 'PU_CLERK' 6 ORDER BY hire_date; 7执行结果: 8HIRE_DATE LAST_NAME SALARY PREV_SAL 9--------- ------------------------- ---------- ---------- 1018-MAY-03 Khoo 3100 0 1124-JUL-05 Tobias 2800 3100 1224-DEC-05 Baida 2900 2800 1315-NOV-06 Himuro 2600 2900 1410-AUG-07 Colmenares 2500 2600 15 16--LEAD分析函数,向前取数 17SELECT hire_date, last_name, 18 LEAD(hire_date, 1) OVER (ORDER BY hire_date) AS "NextHired" 19 FROM employees 20 WHERE department_id = 30 21 ORDER BY hire_date; 22执行结果: 23HIRE_DATE LAST_NAME Next Hired 24--------- ------------------------- ---------- 2507-DEC-02 Raphaely 18-MAY-03 2618-MAY-03 Khoo 24-JUL-05 2724-JUL-05 Tobias 24-DEC-05 2824-DEC-05 Baida 15-NOV-06 2915-NOV-06 Himuro 10-AUG-07 3010-AUG-07 Colmenares

     当然,可以通过自连接的方式,使用rownum进行关联实现此功能。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Oracle——分页查询

查询员工表中,工资排名在1020之间的员工信息。select  from(    selectrownumrn,employee_id,salary      from(        selectemployee_id,salary,last_name        fromem