2013-05-06 89 views
1

我在Access編碼方面不是很熟練,我更喜歡使用SQL。我有一個代碼,用於在特定領域吸引一些員工。但是有一張桌子有員工全部歷史記錄,所以我在REC EFF STT DT領域進行了抽籤,當時他們可能已經開始了每個職位。我只需要最近一次(他們目前的)工作。我知道我需要WHERE語句中的子查詢,包括MAX DATE,但我無法弄清楚如何正確格式化它。Access中的子查詢

SELECT O896IA_VEMPPRSA.EMP_NA, O896IA_VEMPPRSA.SYS_EMP_ID_NR, 
    ([O896IA_VEMPPRSA].[REG_NR]) & ([O896IA_VEMPPRSA].[DIS_NR]) AS RRDD, 
    O867IA_VJOBHST.BUS_UNT_REF_NR, O867IA_VJOBHST.REC_EFF_STT_DT 
FROM O867IA_VJOBHST 
INNER JOIN O896IA_VEMPPRSA 
    ON O867IA_VJOBHST.SYS_EMP_ID_NR = O896IA_VEMPPRSA.SYS_EMP_ID_NR 
WHERE (((([O896IA_VEMPPRSA].[REG_NR]) & ([O896IA_VEMPPRSA].[DIS_NR])) 
     IN ("2010","2108","2029","2230","2580")) AND 
     ((O867IA_VJOBHST.BUS_UNT_REF_NR) IN  
     ("ISBOP","ISCIM","ISGAP","ISCRA","ISCTP","ISOPS","ISSCS","ISSSP","ISTTG"))) 
GROUP BY O896IA_VEMPPRSA.EMP_NA, O896IA_VEMPPRSA.SYS_EMP_ID_NR, 
     ([O896IA_VEMPPRSA].[REG_NR]) & ([O896IA_VEMPPRSA].[DIS_NR]), 
     O867IA_VJOBHST.BUS_UNT_REF_NR, O867IA_VJOBHST.REC_EFF_STT_DT; 

我不能簡單地使用MAX DATE,因爲它會包含他們每次工作的記錄。我只需要他們當前的那個,這是他們最近的日期。

回答

1

你應該能夠在您的WHERE子句中添加一個條件:

and O867IA_VJOBHST.REC_EFF_STT_DT = (select max([hist].REC_EFF_STT_DT) 
from O867IA_VJOBHST as [hist] 
where [hist].SYS_EMP_ID_NR = O896IA_VEMPPRSA.SYS_EMP_ID_NR) 

這個假設不會有兩個條目具有相同最大日期。

+0

非常感謝。 – user2119980 2013-05-06 19:18:00