条件内连接逻辑

Conditional Inner jopin logic

我目前有一个 table 作为(示例快照):

Table1
Employee ID Old Value      New Value         Update Date
1           Analyst        non-employee     10/1/2012
1           non-employee   Senior Analyst   10/1/2012
2           Analyst        non-employee      9/1/2012
2           non-employee   Assistant Mgr.    9/1/2012
2           Assistant Mgr. non-employee     10/1/2015
2           non-employee   Manager          10/1/2015
3           Analyst        non-employee     10/1/2015
3           non-member     Manager          10/1/2015
4           Analyst        non-employee      9/1/2012
4           non-employee   Senior Analyst    9/1/2012
4           Senior Analyst non-employee     10/1/2015
4           non-employee   Assistant Mgr.   10/1/2015
4           Assistant Mgr. non-employee     10/6/2015
4           non-employee   Manager          10/6/2015

从这个table中,我需要挑出那些从分析师直接过渡到经理的员工ID,即。没有成为助理经理或高级分析师。

期望的结果:

Employee ID Old Value   New Value   Update Date
3           Analyst     Manager     10/1/2015

我一直在试图找出一种逻辑来使用条件内部联接来获得所需的结果。但到目前为止我没有运气。任何帮助将不胜感激!

如果我理解正确,那么这个查询可能有效:

select t.id, t.oldvalue, tnext.newvalue, t.updatedate
from table t join
     table tnext
     on t.employeeid = tnext.employeeid and
        t.updatedate = tnext.updatedate and
        t.newvalue = 'non-employee' and
        tnext.oldvalue = 'non-employee'
where t.oldvalue = 'Analyst' and tnext.newvalue = 'Manager';

它应该适用于您的示例数据,但 (4) 很麻烦,因为同一日期有四处更改。