在Access编码方面我不是很熟练,我更喜欢使用SQL。我设置了一些代码来吸引特定领域的员工。但是一张桌子上有员工的整个历史记录,所以我拉开了REC EFF STT DT领域,这是他们可能已经开始的每个职位。我只需要最近的一份(他们现在的)工作。我知道我需要在WHERE语句中包含一个子查询,包括MAX DATE,但我无法弄清楚如何正确格式化它。
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,因为它将包含他们所拥有的每项工作的记录。我只需要他们当前最近的日期。
答案 0 :(得分: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)
这假设没有两个条目具有相同的最大日期。