1

在 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,因为它将包括他们所从事的每项工作的记录。我只需要他们现在的,所以他们最近的日期。

4

1 回答 1

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)

这假设不会有两个具有相同最大日期的条目。

于 2013-05-06T19:16:42.233 回答