• ベストアンサー

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

逆引クエリーでも見つからなかったので 質問させて頂きます。 コード | 年月 | 価格 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% (7418/18948)
回答No.2

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

COZYZXC
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ACCESSで、履歴事項を管理するクエリを作成したい

    ACCESSのクエリで悩んでいます。ご回答頂けると幸いです。 <やりたいこと> 更新履歴を残しつつ、現在事項のみを抽出する作成クエリを作りたい。 <元テーブル : 履歴事項 > ID│更新日 │コード│内容1  │内容2  │更新理由 01│4/22│001│あいうえお│かきくけこ│新規 02│5/22│002│さしすせそ│たちつてと│新規 03│5/22│001│なにぬねの│     │はひふへほ 更新があったときは、変更する内容だけを入力し、 変更のない内容はNULLにします。 <作成したいテーブル : 現在事項> コード│内容1  │内容2   001│なにぬねの│かきくけこ 002│さしすせそ│たちつてと コードごとに更新日が最新のものを抽出し、ブランクの内容があったら、 その直近の更新日のものを抽出してくるようにしたいのです。 当方初心者のため、できればクエリのデザイン画面で できる方法があるといいのですが、難しいならSQLも頑張ります。 ご回答、よろしくお願い致します。

  • ACCESS 選択クエリでの抽出条件について

    在庫マスターと得意先マスターのテーブルを使用して 在庫マスターのデータを抽出条件により出力したいと思っています。 在庫マスターは区分コード1の倉庫コードと区分コード3の店舗コードと分かれており、 抽出条件は区分コード1の時は倉庫コード199と155は除きます。 区分コード2の時は得意先マスターの形態コードから"1"と"2"のものを抽出します。 デザインビューでクエリ作成するで選択クエリから抽出条件を入力してデータを出力できないのでしょうか。 色々と試していますがエラーが表示され出力できません。 例) If([ST_WHTYPE]="1",([dbo_STOCK].[ST_WHNO]) Not In ("199","155"), IIf([ST_WHTYPE]="3",[CU_SHOPTYPE]="1" Or [CU_SHOPTYPE]="2")) この場合は集計関数・・・・・含んでないクエリーを実行しましたと表示されます。 他には複雑すぎるため評価できませんとかエラーが表示されます。 選択クエリでの抽出条件ではできないのでしょうか。

  • 不一致クエリでnullまで抽出されてしまいます

    質問です。 現在、accessにて不一致クエリを使用し、テーブルAをチェックし、 マスタテーブルに無い情報が書かれてしまっているフィールドがある場合 抽出して確認をする、というクエリを作りたいと考えています。 不一致クエリにて自動で入る「is null」を使用すると マスタテーブルに無い事が書いてあるレコードは抽出するのですが (逆になぜis nullで相違するレコードが抽出されるのか理解に苦しんでもいるのですが) is nullですので、nullのレコードも抽出されてしまいます。 抽出条件として、マスタテーブルと相違するもの&nullは抽出しない、としたいのですがお知恵を拝借出来ませんでしょうか。 よろしくお願いいたします。

  • Access 抽出漏れ行をみつけるクエリ

    図のようなテーブル「TBL_A」がCSVファイルの形で提供されます。この「TBL_A」は全レコードのテーブルあり「正」データばかりのマスターと考えてください。 このCSVデータをACCESSによみこみテーブル「TBL_A」としてあります。 「TBL_A」をいろいろな人が加工したり、抽出作業をしているのですが、「TBL_B」のような抽出をかけて渡してきた人がいたので、「データ(レコード)が足りないので、不一致クエリで足りないのを見つけておいてください」と頼んだところ、何度やってもみつけられないというので、自分でも試してみました。 図でいえば、ピンク色のレコード(行)をみつければいいのですが、Accessで不一致クエリをかけてみたところ、図の下部のようなデータしか抽出できませんでした。 やったことは2つ 1) TBL_Aを左にし、右にTBL_Bを右に配置し、不一致クエリウィザードでの矢印(→)で商品コードを紐付けた 2) 最初にTBL_AとTBL\Bをクエリで「商品コード」「価格」ぞれぞれ結びつけ(つまり2つの線)、「商品コード」「価格」を「クエリ1」として抽出。その「クエリ1」を上のTBL_Bの位置にもってきて、不一致クエリ。 どちらとも、結果は図の下のようになってしまいます。 図の上部のピンクの部分を確実に抜き出すには、どのようなクエリ(またはSELECT文)が必要でしょうか。 メモ: ・商品コードは「テキスト型」です。 ・商品コードが同じでも販売場所やいろいろな経緯で価格が違っていたり、返品の場合は返金するためマイナス金額がつくことがあり、商品コードと価格はかならずしも合致しません。 ・Accessは2010か2013を使っています。 ※今回はVBAの質問ではありません。

  • Access2007での売掛残の抽出

    Access2007にて顧客別の売掛残を抽出するクエリーを 作成しました。 過去の履歴を見るのには非常に便利なのですが、 直近の売掛残高のみを抽出する場合は どの様にすれば良いのでしょうか? 過去からの履歴ですと顧客によっては数百行となり 直近の売掛残を見るのにかなりのスクロールを しなければなりません。 昨日時点での売掛残のみを抽出するには、 処理された日付を入力すればいいのですが、日付入力を 行わずに最後に処理された時点での売掛残を表示させるには どの様なコントロールを行えばよいのでしょうか? ご存じの方がいらっしゃいましたらご指導いただきたいと 思っております。 よろしくお願いいたします。

  • アクセスのクエリの組み方を教えてください

    アクセスで、クエリを組みたいのですがうまくできません。 添付画像をご覧ください。 テーブル1の中の「仕入コード1」フィールドと「仕入コード2」フィールドと 仕入コードマスタの「仕入コード」フィールドとの掛け合わせを行いたいです。 その結果、 (1)「仕入コード1」フィールドに存在して、「仕入コード」フィールドに存在しない、 (2)「仕入コード2」フィールドに存在して、「仕入コード」フィールドに存在しない レコードを一度に抽出したいです。 今回の場合であれば、品番222(含むAB)と品番333(含むAD)の2レコードを抽出したいです。 クエリを組みましたが、うまくそのようにできませんでした。 クエリのどこがおかしいのか?ご指摘頂けませんでしょうか。よろしくお願いいたします。

  • Access2003でクエリーを作った場合。。。

    選択クエリー作成時に、実績データのテーブルと商品マスタのテーブルで 商品コードを結合させたのですが、うまく抽出できませんでした。 ACCESS2003使用です。 <実績データの商品コード>  AAA ← 半角 <商品マスタの商品コード>  AAA ← 半角  AAA ← 全角 商品マスタに、半角と全角が存在していた場合、どちらとも一致していると みなされダブって集計されてしまいました。 ACCESS97では半角と全角では不一致と判断していたのですが、2003 で同じクエリーを作ったところ、半角と全角でも一致とみなされているようです。 半角と全角では「不一致」とする方法を教えてください。

  • Accessで、1つのマスターを複数のフィールドで参照する

    いつも大変お世話になっております。m(_ _)m Accessで以下のようなテーブルを作成します。 テーブル(1) ・生産部門コード ・販売部門コード ・AS部門コード テーブル(2) ・部門コード ・部門名 テーブル(2)はマスタになります。 00:A生産部 01:B生産部 11:A販売部 12:B販売部 みたいな情報が入っています。 テーブル(1)の「部門コード」は、テーブル(2)の値を参照して入力します。 この2つのテーブルをリレーションして、クエリで部門名を表示させたいのですが、1つのマスタ(テーブル(2))のコードを複数のフィールドで参照するとエラーになります。 このような場合、テーブル(マスタ)を3つ作らないとダメなのでしょうか? 要は、テーブルに部門情報を入力したいのですが、マスタは1つで良いということです。 よろしくお願いします。

  • Accessのクエリのデータ抽出のエラー?について

    お世話になります。 Accessのクエリでのデータ抽出について教えてください。 テーブルからフィールドを商品コードと出荷日の2つを選択し、 集計を使用して、商品コードでグループ化して、出荷日で最大にします。 すると、抽出条件で商品コードを指定すると抽出できるのですが、抽出条件で 指定せずすべてのデータを抽出すると出てこない商品コードがあります。 たとえば[A]という商品コードを抽出条件に指定すると抽出できるのですが、 抽出条件で指定せずすべてのデータを抽出するとこの[A]という商品コードが 抽出されません。 何が理由なのかお分かりになりましたらどうぞよろしくお願いいたします。 当方SQLがわかりませんのでクエリのデザインビューでご説明いただけますと 幸いです。

  • ACCESSの時間帯の抽出について

    between関数を使って、 クエリーで、テーブル上のとある任意の時間帯が記載された列について、 5:00から19:00を抽出したい、 5:00から25:00を抽出したい、 また上記がテキストだった場合も、 500から1900を抽出したい といった条件は簡単にできますか? アクセスマスターには優しい内容とおもいますが。

専門家に質問してみよう