我已经写了以下选择以从工作表中获取以前的不同等级值。这很好用,但是否可以简化没有 3 个级别的代码?
select value_1
from ( select distinct
value_1,
date_from,
date_to,
emp_id,
(select o.value_1
from jobs o
where o.emp_id=w.emp_id
and (
(o.date_to >= sysdate and o.date_from <= sysdate) or
(o.data_from <= sysdate and o.data_to is null)
)
) current_grade
from jobs w
where w.emp_id = t.emp_id
order by data_from desc
)
where value_1 != current_grade
and data_from <= sysdate
and rownum=1
and t.emp_id=123
order by data_from desc,
value_1,
emp_id
它应该做什么?我想从工作表中选择以前不同的等级值。该表用于存储每个员工的职位,它们有 date_from、date_to,另外在 value_1 中我们存储等级符号。对我来说重要的是选择以前可能改变了 3 个位置的以前不同的等级值。