• ベストアンサー

ACCESS 一番最新の日付の金額を出したいのですが・・

社員ID/交通費/登録日 のフィールドがあるテーブルがあります。 社員ID/交通費/登録日 0001  800  2007/4/1 0002  400  2007/4/2 ・ ・ 0001 700  2007/5/2 となった場合、0001の人は700円と言う風に登録日が最新のものを抽出したいのですが クエリをつくり登録日の集計を「最大」にしてみたら、日付は5/2がちゃんと出ますが、金額がその登録日以外の金額になるのです。 どうすればよいでしょうか? 分かる方教えて下さい。宜しくお願いします。  

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.4

SQL文とクエリは同じです。 フィールド:登録日 テーブル:TEST 並び替え: 表示: 抽出条件:DLOOKUP("MAX(登録日)","TEST","社員ID=" & 社員ID); または: フィールド:登録日 テーブル:TEST 並び替え: 表示: 抽出条件:(SELECT MAX(登録日) FROM TEST AS B WHERE TEST.社員ID=B.社員ID) または: このように、クエリを編集すれば良いということです。 ですから、事実上は、"TEST" だけを実際のテーブル名、クエリ名に置き換えるだけです。

meatoffice
質問者

お礼

いつもご丁寧な回答嬉しいです。 教えていただいたとおりにして出来ました。 本当にありがとうございます。

その他の回答 (4)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.5

>登録日の更新条件欄というのはどこにあるのでしょうか それはそれで別に設定してください

noname#140971
noname#140971
回答No.3

<TEST> ID___社員ID___交通費___登録日 1____101___________\100___2007/01/01 2____102___________\200___2007/02/02 3____101___________\300___2007/03/03 4____102___________\110___2007/04/04 5____101___________\220___2007/05/05 <クエリ1> 4____102___________\110___2007/04/04 5____101___________\220___2007/05/05 一番簡単なのは、その行の[社員ID]のMAX(登録日)と一致する[登録日]の行を SELECT すること。 SELECT * FROM TEST WHERE 登録日=DLookup("MAX(登録日)","TEST","社員ID=" & 社員ID); もちろん、DLookup 関数の部分を SQL文で書くことも可能です。 × SELECT * FROM TEST WHERE 登録日=(SELECT MAX(登録日) FROM TEST WHERE 社員ID=社員ID); ○ SELECT * FROM TEST AS A WHERE 登録日=(SELECT MAX(登録日) FROM TEST AS B WHERE A.社員ID=B.社員ID); 単にDLookup 関数の部分をSQL文にしても正しい結果は得られません。 その行の[社員ID]を、A.社員ID で表現する工夫。 最大値の検索対象としての[社員ID]を、B.社員ID で表現する工夫。 などが必要となります。

meatoffice
質問者

お礼

回答ありがとうございます。 ですがSQLは私にはちょっと難しい回答だったので、解決できませんでした・・ いつも丁寧に回答くださりありがとうございます。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

登録日の更新条件欄に In (select max(登録日) from テーブル名 as A where A.社員ID=テーブル名.社員ID) テーブル名にはそちらのテーブル名を Aはそのままでいいです

meatoffice
質問者

お礼

回答ありがとうございます。 登録日の更新条件欄というのはどこにあるのでしょうか・・・すみません。その辺もまだ分かってない初心者なので・・・ もうちょっと勉強してみます。

  • ttk11
  • ベストアンサー率25% (40/154)
回答No.1

理屈の上では 1.選択クエリーの作成 社員idと登録日でsortのため 2.上記クエリーを入力としての 集計クエリーを作成    ここでは、グループ用項目は 社員id    交通費のところは 「最後のレコード」とする でできるはずです しかし、ACCESSの集計クエリーは、実際には 自分では想定しないような結果を出すことが多くあります わたしは、バグなのではないかと思っているので 上記のクエリーで、うまく結果が出ない可能性があります そのときはごめんなさいです

meatoffice
質問者

お礼

回答ありがとうございます。 上記のとおりにしてみたのですが、やっぱり日付は最新のものが出るのに金額が出なかったです。

関連するQ&A