Oracle-函数-偏移取值(跨行引用)

前端之家收集整理的这篇文章主要介绍了Oracle-函数-偏移取值(跨行引用)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

--LAG分析函数,延后取数,在不使用自联接的情况下同时提供对表的多行数据的访问
SELECT hire_date,last_name,salary,LAG(salary,1,0) OVER (ORDER BY hire_date) AS prev_sal
  FROM employees
  WHERE job_id @H_301_38@= PU_CLERK
  ORDER BY hire_date;
执行结果:   
HIRE_DATE LAST_NAME                     SALARY   PREV_SAL
--------- ------------------------- ---------- ----------
18@H_301_38@-MAY@H_301_38@-03 Khoo                            3100          0
24@H_301_38@-JUL@H_301_38@-05 Tobias                          2800       3100
24@H_301_38@-DEC@H_301_38@-05 Baida                           2900       2800
15@H_301_38@-NOV@H_301_38@-06 Himuro                          2600       2900
10@H_301_38@-AUG@H_301_38@-07 Colmenares                      2500       2600
--LEAD分析函数,向前取数
SELECT hire_date,LEAD(hire_date,1) OVER (ORDER BY hire_date) AS "NextHired" 
  FROM employees
  WHERE department_id @H_301_38@= 30
  ORDER BY hire_date;
执行结果:
HIRE_DATE LAST_NAME                 Next Hired
--------- ------------------------- ----------
07@H_301_38@-DEC@H_301_38@-02 Raphaely                  18@H_301_38@-MAY@H_301_38@-03
18@H_301_38@-MAY@H_301_38@-03 Khoo                      24@H_301_38@-JUL@H_301_38@-05
24@H_301_38@-JUL@H_301_38@-05 Tobias                    24@H_301_38@-DEC@H_301_38@-05
24@H_301_38@-DEC@H_301_38@-05 Baida                     15@H_301_38@-NOV@H_301_38@-06
15@H_301_38@-NOV@H_301_38@-06 Himuro                    10@H_301_38@-AUG@H_301_38@-07
10@H_301_38@-AUG@H_301_38@-07 Colmenares

猜你在找的Oracle相关文章