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

お世話になっております。

Accessで発注テーブルから、前回の発注分のレコードだけ
を抜き出すクエリがあれば教えてください。

発注テーブルの構成としては

商品コード 発注数 発注日
A-1     15    2014/07/05
A-1     10    2014/07/10
A-2     25    2014/07/12
B-3    30 2014/07/14
B-3     30    2014/07/18

という構成になっており、この場合、
A-1の2014/07/10の発注分
A-2の2014/07/12の発注分
B-3の2014/07/18の発注分
をクエリで抜き出したいと思います。

当方SQL文とモジュールが使えませんので
クエリのデザインビューでの方法をご教授
いただけますとありがたいです。

どうぞよろしくお願いいたします。

A 回答 (2件)

クエリのフィールドに商品コード、発注日を表示させます


「Σ」という集計ボタンを押します。
その集計項目で[商品コード]は「グループ化」、[発注日]は「最大」を選びます。

商品コードで"グループ化"することで、「商品コード毎の」という設定になります
さらに[発注日]で"最大"に指定してるので、「商品コード毎の最大」という見方です。

SQL文はわからないとの事ですが、
もし上の説明もわからないようでしたら下記をコピーし、「表示」の切り替えを「SQLビュー」にして貼り付け、再度「デザインビュー」、「データシートビュー」に切り替えても今回は簡単な分なのでうまくいけると思います。
ただ、下記にある項目名が違う場合は修正してくださいね。
テーブル名は"発注"にしています。
テーブル名が違うときはこの「発注」と書いてあるところを置き換えてください。
他の項目名"商品コード"、"発注日"も同様に。

SELECT 発注.商品コード, Max(発注.発注日) AS 発注日の最大
FROM 発注
GROUP BY 発注.商品コード;
「Accessで前回発注分だけ抜き出すクエ」の回答画像1
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。いただいた内容で試してみます。どうもありがとうございました。

お礼日時:2014/07/22 18:48

テーブル名を ★★ と仮定します。



以下をクエリのSQLビューに記述後、デザイン表示して、
指定の仕方を確認してください。
データシートビューで表示すると、得たいものが表示されるかも・・・

SELECT * FROM ★★ AS Q1
WHERE 発注日=(SELECT Max(発注日) FROM ★★ WHERE 商品コード=Q1.商品コード);


意味を解説しておくと、
・テーブル ★★ のものを全部表示しましょう

SELECT * FROM ★★

対象は・・・というと
・発注日が、表示しようとしている 商品コードの中で最大(直近)のもの

表示しようとしている発注日 = ( SELECT Max(発注日) FROM ★★ WHERE 商品コード= ▲▲ )

この ▲▲ が、表示しようとしている商品コード

表示しようとしているテーブル ★★ に、別名 Q1 を付けておいて
FROM ★★ AS Q1
▲▲ 部分に Q1.商品コード ・・・ 表示しようとしている商品コード

つまり、
・表示しようとしている発注日が
・表示しようとしている商品コードの最大(直近)の日付のもの

という指定方法になっています。


※ 使えないのでできません・・・ このフレーズは、いつまで有効なのでしょうか?

上記は追加/更新可能ですが見るだけで良いのなら以下の方法も

以下の内容でクエリ「☆☆」を作っておきます。

SELECT 商品コード, Max(★★.発注日) AS 発注日 FROM ★★
GROUP BY 商品コード;

このクエリ ☆☆ と、元々のテーブル ★★ を表示して
商品コード、発注日 の2つを結び付けたクエリを作成しデータシートビューで表示してみます。
ちなみに SQL ビューで見た時の内容は

SELECT ★★.* FROM ★★ INNER JOIN ☆☆ ON
★★.商品コード=☆☆.商品コード AND ★★.発注日=☆☆.発注日;


それぞれ、SQL ビューで記述後、デザインビューでの記述方法を確認してください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。SQL文は苦手ですが、試してみます。

お礼日時:2014/07/23 11:39

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