2015-10-06 102 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)=」非員工「));