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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容