2015-10-06 108 views
1

我现在有一个表作为(样品快照):错误在内部连接功能

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-employee  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 

我跑下面的查询中获取得到期望的结果:

select t.id, t.oldvalue, tnext.newvalue, t.updatedate 
from table t inner 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'; 

我得到的错误是加入表达的t.newvalue='non-employee'部分不支持高亮查询。我GOOGLE了这个问题,但我无法找出问题。任何帮助将非常感激!谢谢!

回答

0

在连接条件,尝试改变

tnext.oldvalue = 'non-employee'

tnext.oldvalue = 'non-member'

我认为应该解决您的问题。

+0

表中错字的道歉。它应该是非员工。任何时候发生变化,状态首先变为非员工,然后变为新状态。 –

+0

我只是对sqlite数据库中的相同关系运行相同的查询,并得到了完美的结果。你使用的是什么DBMS? – audin

+0

我正在使用MS Access。不幸的是,这是我目前唯一拥有的软件。 –

0

感谢您的帮助球员......我想我找出了问题所在。我必须以MS Access的“可接受”格式编写查询。 我写此查询和它的工作:

SELECT a1.uid,a1.oldvalue,a2.newvalue,a1.updatedate

FROM表1为A1 INNER JOIN

(选择Table1.uid,表1 (a1.updatedate = a2.updatedate)AND(a1).oldvalue,Table1.newvalue,Table1.updatedate FROM Table1 where Table1.oldvalue =“Non-Employee”AND Table1.newvalue =“Manager”)AS a2

ON .uid = a2.uid)

WHERE(((a1.oldvalue)=“An alyst“)AND((a1.newvalue)=”非员工“));