我肯定这很简单,但是对于访问特别是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条记录,所以如果我能得到一些帮助,它将对很多事情有所帮助,我已经尝试解决了好几周了!
谢谢!
以下查询应返回您想要的结果:
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