電子書籍の厳選無料作品が豊富!

いつもお世話になっています。

クエリを使って次のようなことがしたいのですが可能でしょうか?

下記のような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

ご指導よろしくお願いします。

A 回答 (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、質問しなきゃならない判らないややこしいクエリなど利用すべきではない。

と、思います。
    • good
    • 0

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