每个唯一行的Oracle LAG函数

时间:2018-10-10 18:34:59

标签: sql oracle

我有以下查询:

SELECT
        EEEV_EMPL_ID, 
        EEEV_DT, 
        EEEV_CCTR_ID, 
        LAG(EEEV_CCTR_ID, 1, ' ') OVER(ORDER BY EEEV_EMPL_ID DESC, EEEV_END_DT ASC) AS prev
FROM 
        CDAS.VDWHEEEV1 eeev1
ORDER BY 
        EEEV_EMPL_ID

因此,对于每个EEEV_EMPL_ID,该表可以有多行。我想落后于每组唯一的empl_id。我不想从一个empl_id落后到另一个。因此,如果它是组的最后一行,则滞后值应为Null或其他值。现在,它只是滞后到下一行,即使它是另一个empl_id。我该怎么做。我希望这是有道理的。

1 个答案:

答案 0 :(得分:2)

如果我的理解正确,那么您想要partition by

    LAG(EEEV_CCTR_ID, 1, ' ') OVER (PARTITION BY EEEV_EMPL_ID ORDER BY EEEV_END_DT ASC) AS prev