番号が同じで指定日より小さい最新の日付
access2002
部署、社員番号、社員の入社日、現部署への配属日のテーブルがあります。
busho,staffID,nyushaDate,haizokuDate
00001,1010100,2000/01/01,2000/01/01
00001,1010101,2000/04/01,2006/04/01
00001,1010102,2006/04/01,2007/04/10
00002,1010103,2000/04/01,2000/04/01
00002,1010104,2000/04/01,2006/04/01
00002,1010105,2006/04/01,2006/04/08
00003,1010106,2000/01/01,2000/01/01
00003,1010107,2006/01/01,2007/04/01
00003,1010108,2007/04/01,2007/10/01
このテーブルから指定した日付以前の入社日で各部署の最新の配属者を抽出したいと思っています。
例えば、2006年1月1日で検索すると
00001,1010101,2000/04/01,2006/04/01
00002,1010104,2000/04/01,2006/04/01
00003,1010107,2006/01/01,2007/04/01
という結果を望んでいます。
まず以下のようなクエリを作成しました。
SELECT T.busho, T.staffID, T.nyushaDate, Max(T.haizokuDate) AS haizokuDateの最大
FROM T
GROUP BY T.busho, T.staffID, T.nyushaDate
HAVING (((T.nyushaDate)<=[検索日?]));
しかし結果は、
00001,1010100,2000/01/01,2000/01/01
00001,1010101,2000/04/01,2006/04/01
00002,1010103,2000/04/01,2000/04/01
00002,1010104,2000/04/01,2006/04/01
00003,1010106,2000/01/01,2000/01/01
00003,1010107,2006/01/01,2007/04/01
となり配属最新日が抽出できませんでした。
次に過去ログをいろいろ調べて、以下のようなクエリを作成しました。
SELECT T.busho, T.staffID, T.nyushaDate, T.haizokuDate
FROM T
WHERE (((T.nyushaDate)<=[検索日?]) AND ((T.haizokuDate)=(SELECT MAX(haizokuDate) FROM T AS B WHERE T.busho=B.busho)));
しかし今度は、何も表示されませんでした。
何が間違っているのでしょうか。
どのようにすれば望む結果が得られるのでしょうか。
よろしくお願いします。