• ベストアンサー

履歴を持つ商品マスターの取出し方

逆引クエリーでも見つからなかったので 質問させて頂きます。 コード | 年月 | 価格 1 | 2006/12 | 100 * 2 | 2006/6 | 1000 2 | 2006/9 | 1200 2 | 2006/12 | 1500 * 3 | 2006/8 | 2200 3 | 2006/12 | 2000 * 4 | 2006/8 | 50 * 上記のように履歴を持った商品マスターがある場合、 直近のマスター (*のデータ) をクエリーで取出したい 場合は、クエリーデザインで抽出できますでしょうか。 もしくは、いくつかのクエリーを組み合わせてなど。 社内には、アクセスの有識者がいないため、行き詰まっており よろしくお願い致します。

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

  • ベストアンサー
  • JAWS55
  • ベストアンサー率38% (176/452)
回答No.1

1.コードをグループ化して年月の最大を抽出するクエリを作成。 2.上のクエリと元のテーブルをコードと年月を連結で連結してコード・年月の最大・価格を抽出 でどうでしょうか?

COZYZXC
質問者

お礼

ありがとうございます。 まさに頭に描いていたのはこの処理です。 最大の出し方がわからなかったのですが、 グループ化で呼び出すのを思い出しました。 課題もクリアーです

その他の回答 (3)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

>Aになにをいれるのかがわからず、苦戦しています。 Aのままでいいのです 同じテーブルに別の名前をつけて比較用に開きます

COZYZXC
質問者

お礼

別名ということなのですね。 これですっきりしました。 トライはすぐはできませんが 参考になりました。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

こういう場合はサブクエリを使います クエリデザインビューでも作成できますよ クエリデザインビューで年月の抽出条件欄に in (select max(年月) from テーブル名 as A where A.コード=テーブル名.コード)

COZYZXC
質問者

お礼

ありがとうございます。 スマートにできると思ってやってみたのですが、 Aになにをいれるのかがわからず、苦戦しています。 一応課題はクリアーしましたが、今後のために、 お手数でなければ、補足頂ければありがたいです。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

入力順(更新含む)が前後しなければ、クエリで「表示」「SQLビュー」に SELECT 商品マスター.コード, Last(商品マスター.年月) AS 更新年月, Last(商品マスター.価格) AS 最新価格 FROM 商品マスター GROUP BY 商品マスター.コード ORDER BY 商品マスター.コード, Last(商品マスター.年月); で設定可能ですが... まあ確実なのは#1の方の方法ですね。

COZYZXC
質問者

お礼

ありがとうございます。 せっかくですが、自分はSQLがわかっていないので 理解も少し難しかったです。

関連するQ&A