Sql 每个唯一行的Oracle LAG函数

Sql 每个唯一行的Oracle LAG函数,sql,oracle,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_

我有以下疑问:

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_emp_ID,该表可以有多行。我想为每组唯一emp_ID设置延迟。我不想在一个员工和另一个员工之间落后。因此,如果它是组的最后一行,则滞后值应为Null或其他值。现在它只是落后于下一行,即使它是一个不同的雇员id。我如何做到这一点。我希望这是有道理的

如果我理解正确,您希望按
分区:

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

如果我理解正确,您希望按
分区:

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

编辑您的问题并提供示例数据和所需结果。编辑您的问题并提供示例数据和所需结果。是的,这是有效的,是分区完成了该技巧,非常感谢。是的,这是有效的,是分区完成了该技巧,非常感谢。