1

これは非常に簡単だと確信していますが、アクセス、特にSQLの完全な初心者です。基本的に私は安全会社で働いており、各従業員の各コースの最新のトレーニングのみを表示するクエリを作成する必要があります.

次のようなアクセス中のテーブルがあります。

従業員 ID... コース ID....コースの日付....有効期限の終了日
....12....................2.. ...................2013/02/01.....2014/02/01
....13................ .........1.................2012/09/20.....2012/09/20 .....
12..... ..........2.................2012/02/01 .....2013/02/01
....12.................................3.................15/06/2013 .... 15/06/2014
....13....................2........ .....2013 年 6 月 15 日.....2014 年 6 月 15
日 ..........13.................1.. ...............2011/09/19.....2012/09/19

(フルストップについては申し訳ありませんが、HTML も得意ではありません)
達成したいのは、従業員ごとの各トレーニングの最新のみのリストです。したがって、次のようになります。

従業員 ID... コース ID....コースの日付....有効期限の終了日
....12....................2.. ...................2013/02/01.....2014/02/01
....13................ .........1.................2012/09/20.....2012/09/20 .....
12..... ..........3.................................2013/06/15.....2014/06/15
....13.................................................2.................15/06/2013 .....2014/06/15

私のテーブルには約 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 に答える