色の知識で人生の可能性が広がる!みんなに役立つ色彩検定 >>

社員ID/交通費/登録日 のフィールドがあるテーブルがあります。

社員ID/交通費/登録日
0001  800  2007/4/1
0002  400  2007/4/2


0001 700  2007/5/2

となった場合、0001の人は700円と言う風に登録日が最新のものを抽出したいのですが

クエリをつくり登録日の集計を「最大」にしてみたら、日付は5/2がちゃんと出ますが、金額がその登録日以外の金額になるのです。

どうすればよいでしょうか?
分かる方教えて下さい。宜しくお願いします。

 

教えて!goo グレード

A 回答 (5件)

SQL文とクエリは同じです。



フィールド:登録日
テーブル:TEST
並び替え:
表示:
抽出条件:DLOOKUP("MAX(登録日)","TEST","社員ID=" & 社員ID);
または:

フィールド:登録日
テーブル:TEST
並び替え:
表示:
抽出条件:(SELECT MAX(登録日) FROM TEST AS B WHERE TEST.社員ID=B.社員ID)
または:

このように、クエリを編集すれば良いということです。
ですから、事実上は、"TEST" だけを実際のテーブル名、クエリ名に置き換えるだけです。
    • good
    • 6
この回答へのお礼

いつもご丁寧な回答嬉しいです。

教えていただいたとおりにして出来ました。
本当にありがとうございます。

お礼日時:2007/06/21 14:07

>登録日の更新条件欄というのはどこにあるのでしょうか


それはそれで別に設定してください
    • good
    • 1

<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 で表現する工夫。
などが必要となります。
    • good
    • 5
この回答へのお礼

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

いつも丁寧に回答くださりありがとうございます。

お礼日時:2007/06/21 11:22

登録日の更新条件欄に



In (select max(登録日) from テーブル名 as A where A.社員ID=テーブル名.社員ID)


テーブル名にはそちらのテーブル名を
Aはそのままでいいです
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

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

お礼日時:2007/06/21 11:17

理屈の上では


1.選択クエリーの作成 社員idと登録日でsortのため
2.上記クエリーを入力としての 集計クエリーを作成
   ここでは、グループ用項目は 社員id
   交通費のところは 「最後のレコード」とする
でできるはずです

しかし、ACCESSの集計クエリーは、実際には
自分では想定しないような結果を出すことが多くあります
わたしは、バグなのではないかと思っているので

上記のクエリーで、うまく結果が出ない可能性があります
そのときはごめんなさいです
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

上記のとおりにしてみたのですが、やっぱり日付は最新のものが出るのに金額が出なかったです。

お礼日時:2007/06/21 11:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング