Oracle下LAG和LEAD分析函数

--  Oracle下LAG和LEAD分析函数

-- Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead)作为独立的列。
-- 这种操作可以代替表的自联接,并且LAG和LEAD有更高的效率。

/* 语法 */  
-- LAG(EXP_STR,OFFSET,DEFVAL) OVER()  
-- LEAD(EXP_STR,OFFSET,DEFVAL) OVER()  
-- EXP_STR要取的列  
-- OFFSET取偏移后的第几行数据  
-- DEFVAL:没有符合条件的默认值  

-- lag与lead函数是跟偏移量相关的两个分析函数,
-- 通过这两个函数我们可以取到当前行列的偏移N行列的值 lag可以看着是正的向上的偏移 lead可以认为负的向下的偏移

SELECT T.ID
     ,LAG(T.NAME) OVER(ORDER BY ID) MIN_V_01
     ,LAG(T.NAME,1,0) OVER(ORDER BY ID DESC) MAX_V
     ,T.NAME
     ,LEAD(T.NAME,1,0) OVER(ORDER BY ID DESC) MIN_V   
FROM (
    SELECT 1 ID ,'1AA' NAME FROM DUAL
    UNION ALL
    SELECT 2 ,'2AA' FROM DUAL
    UNION ALL
    SELECT 3 ,'3AA' FROM DUAL
    UNION ALL
    SELECT 4 ,'4AA' FROM DUAL
    UNION ALL
    SELECT 5 ,'5AA' FROM DUAL
    UNION ALL
    SELECT 6 ,'6AA' FROM DUAL) T

你可能感兴趣的:(Oracle下LAG和LEAD分析函数)