如果我知道当前数据的ID,我怎么知道它上一条记录,和下一条记录
解决方案 »
- Oracle中如何获得语句执行时间?
- SQL单独执行和在存储过程中的执行计划不一样的问题
- 复杂查询(求助)
- oracle自动建主键的问题
- 请教,toad 9.6怎么跟踪调试pl/sql存储过程?
- 古老的问题,连接Oracle时出错:System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.
- 如何在查询中添加空值!!
- Solaris支持 oracle多个版本同时存在么
- 请问以下关联怎样写?最后30分相送。。
- 哪里有PLSQL Developer的使用入门文章??
- number默认只有38位,为什么能插入40位?
- 过程语法检查
功能描述:LEAD与LAG相反,LEAD可以访问组中当前行之后的行。Offset是一个正整数,其默认值为1,若索引超出窗口的范围,就返回默认值(默认返回的是组中第一行)
SAMPLE:下面的例子中每行的"NextHired"返回按hire_date排序的下一行的hire_date值SELECT last_name, hire_date,
LEAD(hire_date, 1) OVER (ORDER BY hire_date) AS "NextHired"
FROM employees WHERE department_id = 30;LAST_NAME HIRE_DATE NextHired
------------------------- --------- ---------
Raphaely 07-DEC-94 18-MAY-95
Khoo 18-MAY-95 24-JUL-97
Tobias 24-JUL-97 24-DEC-97
Baida 24-DEC-97 15-NOV-98
Himuro 15-NOV-98 10-AUG-99
Colmenares 10-AUG-99
关键你要描述要实现什么功能,一般是先给出表和数据脚本,结果数据列表。
select * from staff where staff_no=(select c.p from (select staff_no,lag(staff_no,1,0) over (order by staff_no) as p from staff) c where c.staff_no='6-1102')
如要查询其后一条记录
select * from staff where staff_no=(select c.n from (select staff_no,lead(staff_no,1,0) over (order by staff_no) as n from staff) c where c.staff_no='6-1102')