小编典典

访问SQL查询:查找每个培训课程中每个员工的最新日期条目

sql

我肯定这很简单,但是对于访问特别是SQL来说,这是一个新手,基本上,我在一家安全公司工作,我需要创建一个查询,该查询仅针对每位员工提供每门课程的最新培训。

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

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

(很抱歉,HTML上的句号不是很好)。
我想获得的ID是仅列出每位员工每次培训的最新列表,所以看起来像这样:

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

我的桌子上大约有10,000条记录,所以如果我能得到一些帮助,它将对很多事情有所帮助,我已经尝试解决了好几周了!

谢谢!


阅读 210

收藏
2021-03-17

共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
2021-03-17