我的数据库中有一个 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/