• ベストアンサー

アクセス2003 クエリで年度・商品別にまとめたい

いつもお世話になっています。 下記のような仕入記録テーブルがあったとします。 仕入年月日 | 商品名 | 数量 | 単価 | 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,[仕入年月日]))で出したらいいんですよね? クエリをいくつかの段階に分けて作らないとダメなんでしょうか? ご指導よろしくお願いします。

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

  • ベストアンサー
  • x0000x
  • ベストアンサー率52% (67/127)
回答No.1

こんばんは。 回答が無かったので書き込みます。 以下のクエリです。 クエリデザインを表示し、「表示」-「SQLビュー」を表示して 以下のSQL文を貼り付けます。 「表示」-「データシートビュー」で確認できます。 SELECT DatePart('yyyy',DateAdd('m',-3,[仕入年月日])) AS 仕入年度, tbl1.商品名, Max(tbl1.単価) AS 単価の最大 FROM tbl1 GROUP BY DatePart('yyyy',DateAdd('m',-3,[仕入年月日])), tbl1.商品名; 結果は以下です。 仕入年度 商品名 単価の最大 2006 AAA 120 2006 BBB 280 2007 AAA 150 2007 BBB 250 が取得できます。 ※DatePartの代わりに「Year(DateAdd('m',-3,[仕入年月日]))」でもOKです。

kobutoriman085
質問者

お礼

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

その他の回答 (1)

noname#79209
noname#79209
回答No.2

これで出ませんか? SELECT DatePart("yyyy",DateAdd("m",-3,[仕入記録テーブル]![仕入年月日])) AS 年度, 仕入記録テーブル.商品名, Sum([仕入記録テーブル]![単価]*[仕入記録テーブル]![数量]) AS 仕入金額, Max(仕入記録テーブル.仕入年月日) AS 仕入年月日の最大 FROM 仕入記録テーブル GROUP BY DatePart("yyyy",DateAdd("m",-3,[仕入記録テーブル]![仕入年月日])), 仕入記録テーブル.商品名; 単価が変化してはいますが、これを表示するのが意味あるのかどうか解らなかったので省いています。

kobutoriman085
質問者

お礼

回答ありがとうございます。 No.1さんの回答を参考に問題は解決したんですが、この回答も今後の参考にさせていただきます。 質問の書き方が少し間違ってました。 年度毎の最終仕入額→年度毎の最終仕入単価でした。 当方の仕入れているのは電線等が主で価格が数か月ごとに変わっていくので、単価が変化するんです。 ありがとうございました。 またお願いします。

関連するQ&A