当列中的值更改时,包括表中的所有行

时间:2018-10-29 18:35:00

标签: sql

我有一个员工变更表,该表可跟踪对员工工作历史记录所做的每项变更,而没有明确的标记说明该变更是什么。我试图跟踪员工曾工作过的不同部门,包括他/她工作过的第一个部门。因此,所有变更以及他/她工作的第一部门。一名员工可能会回到他/她曾经工作过的部门,我们也需要带这些行。我突出显示了我想带回来的行

Emp更改历史记录表

1 个答案:

答案 0 :(得分:1)

您似乎只想要lag()

select t.*
from (select t.*, lag(dept_no) over (partition by emp_no order by effective_date) as prev_dept_no
      from t
     ) t
where prev_dept_no is null or prev_dept_no <> dept_no