- 締切済み
アクセス2003 各売上日の直近仕入額を知るには?
いつもお世話になっています。 クエリを使って次のようなことがしたいのですが可能でしょうか? 下記のような2つのテーブルがあるとします。 <仕入記録> [仕入ID] [仕入年月日] [商品名] [数量] [単価] 1 2007/04/01 AAA 1 1,000 2 2007/04/03 BBB 1 2,000 3 2007/05/06 AAA 1 1,200 4 2007/05/15 CCC 1 800 5 2007/06/08 BBB 1 2,200 6 2007/06/20 CCC 1 900 <売上記録> [売上ID] [売上年月日] [商品名] [数量] 1 2007/04/25 AAA 1 2 2007/05/08 AAA 1 3 2007/05/08 BBB 1 4 2007/06/10 AAA 1 5 2007/06/10 BBB 1 6 2007/06/10 CCC 1 この時2つのテーブルを使って販売した商品の原価(仕入単価)を求めるクエリを作りたいのですがどのようにしたらよいのでしょうか? 仕入単価は、各商品の売上年月日以前かつ最も売上年月日に近い仕入れ時の単価にしたいと考えています。 上記の場合、希望するクエリの結果は下記のような感じです。 [売上ID] [売上年月日] [商品名] [仕入単価] 1 2007/04/25 AAA 1,000 2 2007/05/08 AAA 1,200 3 2007/05/08 BBB 2,000 4 2007/06/10 AAA 1,200 5 2007/06/10 BBB 2,200 6 2007/06/10 CCC 800 ご指導よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
<クエリ1> ID___売上年月日__商品名__数量__仕入単価 1____2007/04/25__AAA_____1_______1000 2____2007/05/08__AAA_____1_______1200 3____2007/05/08__BBB_____1_______2000 4____2007/06/10__AAA_____1_______1200 5____2007/06/10__BBB_____1______2200 6____2007/06/10__CCC_____1______800 まあ、2つのテーブルと所望のクエリを作成してみました。 SELECT 売上記録.ID, 売上記録.売上年月日, 売上記録.商品名, 売上記録.数量, DBLookup("SELECT Top 1 単価 FROM 仕入記録 WHERE 仕入記録.商品名='" & [商品名] & "' AND 仕入年月日<=#" & [売上年月日] & "# ORDER BY ID DESC") AS 仕入単価 FROM 売上記録; と、直近の仕入単価を取得する関数を作成すれば簡単です。 が、これは決して採用してはならないアイデアです。 ※テーブル[売上記録]に列[仕入単価]を追加すべし! 理由1、既に、商品名='AAA' の仕入と売上に矛盾を起こしています。 理由2、仕入順に売上するとは限らない。 理由3、質問しなきゃならない判らないややこしいクエリなど利用すべきではない。 と、思います。