我的数据库中有一个 EMP 表,其中包含以下字段:

id,name,post,joining_date.

每当任何员工名称更改时,都会插入一个带有新名称的新行。意味着如果员工获得任何晋升,他会有多行。现在我想为每个员工明智地指定结束日期。如果我的日期是这样的:
id        name          start_date     post
1          x             24-JAN-05      Software Engineer
2          y             23-JAN-08      Associate Software Engineer
3          x             26-Aug-05      Senior Sofware Engineer
4          y             20-FEB-09      Sofware Engineer

我想要以下格式的数据:
id        name          start_date     end_date        post
1          x             24-JAN-05      26-Aug-05      Software Engineer
2          x             26-Aug-05      null           Senior Software Engineer
3          y             23-JAN-08      20-FEB-09       Associate Software Engineer
4          y             20-FEB-09       null           Software Engineer

所以我想获取每个员工的每个指定的结束日期数据。我不想使用 PL/SQL。我只想使用查询。我希望它有意义。

最佳答案

开始了:

select id, name, start_date, lead(start_date) over (partition by name
order by start_date) as end_date, post from emp;

关于oracle - 从开始日期获取结束日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10775070/

10-11 02:54