题解 | 更新员工信息表

更新员工信息表

https://www.nowcoder.com/practice/1eb20d4bf7c5443da7b84105372c9070

WITH 
NEW_UPDATE AS (
    SELECT 
       EMPLOYEE_ID,
       ROW_NUMBER()OVER(PARTITION BY EMPLOYEE_ID ORDER BY UPDATE_DT DESC) rk,
       NEW_POSITION,
       UPDATE_DT
    FROM
       EMPLOYEE_UPDATE
)
SELECT 
   i.EMPLOYEE_ID,
   CASE 
       WHEN i.LAST_UPDATE_DT>=u.UPDATE_DT THEN i.POSITION
       ELSE u.NEW_POSITION
   END AS POSITION,
   CASE 
       WHEN i.LAST_UPDATE_DT>=u.UPDATE_DT THEN i.LAST_UPDATE_DT
       ELSE u.UPDATE_DT
   END AS LAST_UPDATE_DT
FROM 
   EMPLOYEE_INFO i
JOIN
   NEW_UPDATE u
ON 
   i.EMPLOYEE_ID = u.EMPLOYEE_ID
WHERE
    rk = 1
ORDER BY
    i.EMPLOYEE_ID ASC;

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务