プロが教えるわが家の防犯対策術!

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

下記のような仕入記録テーブルがあったとします。

仕入年月日 | 商品名 | 数量 | 単価 |
2006/04/05   AAA    10     100
2006/07/12   BBB    5      280
2006/11/03   AAA    15     120
2007/02/19   BBB    5      230
2007/04/02   AAA    10     150
2007/05/10   BBB    15     250

この時、年度毎の最終仕入額を商品別に出したいのですがクエリはどのように作ればいいのでしょうか?

以前質問させていただいて商品別の最終仕入日を出すこと(Max関数使用)はできたのですが、これを年度別に分ける方法がわかりません。

年度自体はDatePart("yyyy",DateAdd("m",-3,[仕入年月日]))で出したらいいんですよね?

クエリをいくつかの段階に分けて作らないとダメなんでしょうか?
ご指導よろしくお願いします。

A 回答 (2件)

こんばんは。



回答が無かったので書き込みます。

以下のクエリです。
クエリデザインを表示し、「表示」-「SQLビュー」を表示して
以下のSQL文を貼り付けます。
「表示」-「データシートビュー」で確認できます。

SELECT DatePart('yyyy',DateAdd('m',-3,[仕入年月日])) AS 仕入年度, tbl1.商品名, Max(tbl1.単価) AS 単価の最大
FROM tbl1
GROUP BY DatePart('yyyy',DateAdd('m',-3,[仕入年月日])), tbl1.商品名;

結果は以下です。

仕入年度商品名単価の最大
2006AAA120
2006BBB280
2007AAA150
2007BBB250

が取得できます。

※DatePartの代わりに「Year(DateAdd('m',-3,[仕入年月日]))」でもOKです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
教えていただいたやり方で取得できるのは年度内の最大単価ですよね?
私がやりたかったのは年度内の最終仕入単価なのでちょっとやり方がちがったようです。
ただ教えていただいたやり方をヒントにいろいろ試してみたところうまく出来るようになりました。
グループ化の意味がイマイチわかってなかったので、今回のことでずいぶん理解できた気がします。
ありがとうございました。

お礼日時:2007/05/25 13:08

これで出ませんか?


SELECT DatePart("yyyy",DateAdd("m",-3,[仕入記録テーブル]![仕入年月日])) AS 年度, 仕入記録テーブル.商品名, Sum([仕入記録テーブル]![単価]*[仕入記録テーブル]![数量]) AS 仕入金額, Max(仕入記録テーブル.仕入年月日) AS 仕入年月日の最大
FROM 仕入記録テーブル
GROUP BY DatePart("yyyy",DateAdd("m",-3,[仕入記録テーブル]![仕入年月日])), 仕入記録テーブル.商品名;

単価が変化してはいますが、これを表示するのが意味あるのかどうか解らなかったので省いています。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
No.1さんの回答を参考に問題は解決したんですが、この回答も今後の参考にさせていただきます。

質問の書き方が少し間違ってました。
年度毎の最終仕入額→年度毎の最終仕入単価でした。
当方の仕入れているのは電線等が主で価格が数か月ごとに変わっていくので、単価が変化するんです。

ありがとうございました。
またお願いします。

お礼日時:2007/05/25 13:16

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