有条件的内部jopin逻辑

时间:2015-10-05 20:41:10

标签: ms-access-2010 case inner-join

我目前有一个表格(示例快照):

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

从这张表中,我需要选择那些直接从分析师转变为经理的员工ID,即。没有成为助理经理或高级分析师。

期望的结果:

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

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

1 个答案:

答案 0 :(得分:1)

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

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)很麻烦,因为同一天有四个变化。