| 
                         Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。  代码如下:CREATE TABLE salaryByMonth ( employeeNo varchar2(20), yearMonth varchar2(6), salary number ) ; insert into SALARYBYMONTH (EMPLOYEENO,YEARMONTH,SALARY) values (1,'200805',500); insert into SALARYBYMONTH (EMPLOYEENO,'200802',150); insert into SALARYBYMONTH (EMPLOYEENO,'200803',200); insert into SALARYBYMONTH (EMPLOYEENO,'200804',300); insert into SALARYBYMONTH (EMPLOYEENO,'200708',100); commit; 
SELECT EMPLOYEENO ,YEARMONTH ,SALARY ,MIN(SALARY) KEEP(DENSE_RANK FIRST ORDER BY YEARMONTH) OVER(PARTITION BY EMPLOYEENO) FIRST_SALARY -- 基比分析 salary/first_salary  ,LAG(SALARY,1,0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_SAL  ,12,0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_12_SAL ,SUM(SALARY) OVER(PARTITION BY EMPLOYEENO,SUBSTR(YEARMONTH,4) ORDER BY YEARMONTH RANGE UNBOUNDED PRECEDING) LJ --累计值  FROM SALARYBYMONTH ORDER BY EMPLOYEENO ,YEARMONTH
                          (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |