1

我确信这很容易做到,但我是一个完全新手,尤其是 SQL,基本上我在一家安全公司工作,我需要创建一个查询,它只为每个员工提供每门课程的最新培训。

我有一个访问表,如下所示:

员工 ID... 课程 ID.... 课程日期.... 有效日期
....12 ......................2.. ......................01/02/2013............01/02/2014
............13...... ..........1........2012 年 9 月 20 日......2012 年 9 月
20 日......12 ...... .....................2..................01/02/2012.......01/02/2013
....12.......................3..................15/06/2013 .....15/06/2014
....13.......................2....... .....15/06/2013.....15/06/2014
....13........1.. .............19/09/2011 .....19/09/2012

(抱歉,我也不擅长
HTML

员工 ID... 课程 ID.... 课程日期.... 有效日期
....12 ......................2.. ......................01/02/2013............01/02/2014
............13...... ..........1........2012 年 9 月 20 日......2012 年 9 月
20 日......12 ...... .....................3..................15/06/2013........15/06/2014
....13.......................2.................15/06/2013 .....15/06/2014

我的桌子上有大约 10,000 条记录,所以如果我能得到一些帮助,那将有很大帮助,我已经尝试解决这个问题好几个星期了!

谢谢!

4

2 回答 2

1

以下查询应返回您想要的结果:

SELECT t1.*
FROM 
    Training t1 
    INNER JOIN 
    (
        SELECT [Employee ID], [Course ID], MAX([Course Date]) AS MaxDate 
        FROM Training 
        GROUP BY [Employee ID], [Course ID]
    ) t2 
        ON t1.[Employee ID]=t2.[Employee ID] 
            AND t1.[Course ID]=t2.[Course ID] 
            AND t1.[Course Date]=t2.MaxDate
于 2013-06-18T09:09:42.053 回答
0
select * from t1 as tt where course_date in 
(select max(course_date) from t1 where employeeid==tt.employeeid and 
 courseid = tt.courseid);

相反,您可以使用 row_number,但 ms-access 似乎不支持它。

于 2013-06-18T09:53:40.970 回答