Accessクエリでフィールドの一番大きな数字を抽出する方法

このQ&Aのポイント
  • Accessのクエリでフィールドの一番大きな数字を抽出する方法を教えてください。
  • 追加クエリの抽出条件を使用して、指定の列で最大の数字のみ別のテーブルに抽出する方法を教えてください。
  • 店番号が指定の値で、更新回数が最大のデータのみ別のテーブルに追加する方法を教えてください。
回答を見る
  • ベストアンサー

Accessのクエリでフィールドの一番大きな数字を抽出させるには?

OSはWin98SE Access2000です。 多分簡単なことなのかもしれないのですが、追加クエリの抽出条件を使って、 その列(更新回数)でいちばん大きな数字のみ別テーブルに抽出(追加)させたいのですがその式がわからず悩んでいます。 例(主キーなし) 店番号|商品番号|更新回数|金額|・・・ 001 |A021  |  2 |300 |・・・ 002 |A034  |  1 |200 |・・・ 001 |A122  |  1 |150 |・・・ 001 |A043  |  3 |500 |・・・ 上記で店番号001が3データ入っている中の更新回数が3のデータのみ別のテーブルに追加したいのですが、最大を求めるのでMaxやDMaxを使用したらよいのかな?などと思ったのですが、その先の式の書き方がわからないのでどなたか教えていただけませんか。 どうぞよろしくお願いします。

  • tokin
  • お礼率67% (38/56)

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

  • ベストアンサー
  • stork
  • ベストアンサー率34% (97/285)
回答No.3

三度storkです。 蛇足ですが、先ほどの回答は、SQLを直書きするものだったんで、練習用にGUIでの操作で最新データの取り出し方を補足しておきます。 from句に入っているSQLをクエリとして保存してください。 クエリ名は、[最新データ] ------------------------------------------- select 店番号,max(更新回数) as max更新回数 from [PC売上_T] group by 店番号 ------------------------------------------- どんなクエリになっているかは、デザインビューとデータシートビューで確認してください。 もうひとつクエリを作ります。 デザインビューで[PC売上_T]とさっき作った[最新データ]を追加して、店番号で結合し、さらに更新回数で結合します。結合線がふたつ出来ます。 これで最新のデータのみを抽出するクエリの出来上がりです。 この二つのクエリを一回で済ませると、#1のSQLになります。クエリを二つに分けていると誤ってクエリ[最新データ]を削除すると動作しなくなるので、出来るだけひとつにしましょう。

tokin
質問者

お礼

storkさん回答ありがとうございます。 また、質問しておきながらお返事が遅くなりまして申し訳ありません。 直書きのSQLは、まだみて理解できるところまで行っていないので 勉強して行きたいと思っています。 補足でいただいたGUIでの操作ありがとうございます。 これなら私にもわかりそうです早速試してみます。 昨日に続き今日も外出になりそうですのでこの質問は一度閉じさせていただきます。 もし、実行してみてわからないときは、また質問させてください。 そのときはどうぞよろしくお願いいたします。 本当に勉強になりますありがとうございました。

その他の回答 (2)

  • stork
  • ベストアンサー率34% (97/285)
回答No.2

似たような質問だと思ったら同じ方でしたか、失礼しました。 >SQL中のtable1やtable2は指定するテーブル名を指定し >たら良かったでしょうか。 回答#1のSQLはひとつのテーブルを切り口を変えて自己結合しています。 table1はテーブル名で、table2はtable1を元にしたクエリに別名(仮の名前)をつけているだけなんで、何でもいいです。 補足の内容からいくとtable1は[PC売上_T]ですかね。 >教えていただいたSQLはどこの部分に追加したらよいので>しょうか。 [PC売上_T]が履歴形式のトランザクションで、[PC売上_M]が最新情報のマスタですね。 from句以下を ----------------------------------------------- from [PC売上_T]    inner join    (select 店番号,max(更新回数) as max更新回数     from [PC売上_T] group by 店番号 ) as 最新データ    on ([PC売上_T].店番号 = 最新データ.店番号)    and ([PC売上_T].更新回数 = 最新データ.max更新回数) ------------------------------------------------ ※別名が[table2]だと分かりにくいので[最新データ]としました。 ただ追加するだけだと、前の質問(http://www.okweb.ne.jp/kotaeru.php3?q=155505)と同じ問題が発生すると思われますので、何らかの方法で回避してください。(分からなければ補足してください。)

  • stork
  • ベストアンサー率34% (97/285)
回答No.1

過去ログに同じ問題があるのでそれの応用だと思います。 店番号+更新回数でユニークになりますね。 select * from table1 inner join (select 店番号,max(更新回数) as max更新回数 from table1 group by 店番号)as table2) on (table1.店番号=table2.店番号) and (table1.更新回数=table2.max更新回数)

tokin
質問者

補足

storkさんたびたびありがとうございます。 また、返事が遅くなりすみません。 昨日回答いただいてから色々とやってみたのですが、私のSQL知識不足でうまくいきませんでした。 すみませんが少し質問させてください。 SQL中のtable1やtable2は指定するテーブル名を指定したら良かったでしょうか。 それと追加クエリで現在 INSERT INTO PC売上_M(店番号,商品番号,更新回数,金額・・・) SELECT [PC売上_T].[店番号],[PC売上_T].[商品番号],[PC売上_T].[更新回数],[PC売上_T].[金額]・・・ FROM PC売上_T; のような感じであるのですが、教えていただいたSQLはどこの部分に追加したらよいのでしょうか。 お手数ですがどうぞよろしくお願いします。

関連するQ&A

  • AC2000のクエリで重複データから最新のデータだけ抽出したいのですが・・・

    Windows98Access2000です。 下記のようなテーブルを元にしたクエリがあります。 主索引(主キー)|手配番号 |行番号|更新回数|発行日 |販売先|・・・ 0101023456  |0101023456|  56|   1|19990301|A001 |・・・ 0101034567  |0101034567|  67|   3|20000503|A235 |・・・    ・       ・     ・   ・   ・    ・ 仮に既存データをA、更新データ(TXT)をBとします。 (更新データは毎朝TXTで決まったフォルダーに落ちてきます。) 同じ項目の更新データBを、下記の条件で最終的に既存データAに新規追加、 上書したいのです。 1.更新データBの主索引は主キーにはなっておらず番号がダブっています。   ただレコードごとに「更新回数」項目に1や2といった番号が入ってますので   、その中から同じ主索引番号がある場合更新回数の一番大きな番号だけを抽出   したい。 2.1で抽出した更新データBを今度は、既存データA(主索引は主キー)に追加す   るのですが、上記と同じくすでに重複する主索引番号が存在する場合A、Bデー   タの「更新回数」項目を見て一番大きい番号を反映(上書)させたい。 2の既存データに追加だけは追加クエリを作り重複しないデータは追加することが 出来るのですが、重複しているデータは「XX件の重複データが・・・」とでて 追加することが出来ません。(あたりまえですかf^^;) ちょっとわけのわからない説明になってしまいましたのでやりたいことを簡単に いいますと、更新データから既存データへ主索引がダブることなく毎朝送られて くる最新データをテーブルに取り込みたいということなのです。 ちょっと思ったのですが、もしかして私は抽出条件式が分かってないだけなので しょうかf^^; おかしな質問で申し訳ありませんが、ご指導の程よろしくお願い致します。

  • Accessで作ったクエリーを使ってさらに更新する方法

    Access97のクエリーを使ってデータの抽出や更新を行なっています。Accessでは作成したクエリーを使ってさらにクエリーを作れると思うのですが、うまくいきません。 内容は以下のとおりです。 (1)ある条件で「抽出クエリー1」を作る (2)別の「テーブル」と「抽出クエリー1」をキーマッチングさせ、マッチしたものだけ「テーブル」を更新させたい。 やりたいことは単純なのですが、これを行なうと 「更新可能なクエリーでなくてはいけません」とメッセージが出てしまい、更新できません。作ったクエリーがいけないのかと思い、一度エクセルにエクスポートし、再度アクセスにテーブルとしてインポートするとうまくいきました。ですが、こんな面倒な方法はやってられません。 作ったクエリーを再び別のクエリーで使う為にはどうしたらよいのでしょうか? ちなみに、選択クエリーや追加クエリーではこのようなことが起こったことはありません。 アクセスに詳しい方、どうかよろしくお願いします。

  • アクセスのクエリでの抽出条件

    CD 都市 更新日付 001 秋田 2008/01 002 青森 2008/03 003 秋田 2008/03 004 青森 2008/02 005 札幌 2008/02 上のようなデータがあり、更新日が最新のデータで下のように抽出したいのですが、グループ化ではなく、クエリではどのように抽出条件をいればいいのでしょうか?       003 秋田 2008/03       002 青森 2008/03       005 札幌 2008/02 エクセルに落としDMAX等使用してみましたがうまくいきません。 何かご指導ありましたら宜しくお願い致します。

  • Access 選択クエリーの抽出条件

    Access2000を使っています。 選択クエリーの抽出条件にテーブルの値を設定することは可能でしょうか? たとえば、テーブルAに対して、抽出条件をテーブルBのデータでコード番号 ”B*”(コード番号にBのつくもの)を抽出したいのですが・・・。 よろしくお願いします。

  • ACCESS2003:2番目に大きい値を1レコードのみ抽出

    氏名、ポイントと2つのフィールドをもつテーブル1をもとにクエリ1を作成し、クエリデザインでDMax("[ポイント]","クエリ1","[ポイント]<=" & DMax("[ポイント]","クエリ1"))といった2番目に大きい値(1番目の値が2つ以上ある場合はその値で可)を抽出する式をつくりました。抽出条件に任意の氏名を指定した結果、2番目に大きい値は抽出できましたが、ポイントのデータ数ぶんだけ複数のレコードを表示してしまいます。できれば別のクエリを作成したりせずに、1つのレコードのみ表示させたいのですがどのようにしたらよいか分からず困っております。よろしくお願いします。

  • アクセスのクエリの使い方(基本?)

    氏名と複数項目のデータをもつテーブルがあります。半年後とに新たに同項目によるテーブルとして追加されます。 氏名は重複あり、また追加や次には削除もあります。 A~Eさんのデータがあるテーブル1と、B~Hさんまでのテーブル2で (1)全員分のデータにしていくつかの項目のデータをクエリで抽出したいのですが、選択クエリだとAさんは消えます。 (2)ある項目について要件を満たす氏名をどちらかも抽出したい。 クエリでは無理だと聞いたことがありますが本当に無理でしょうか?

  • アクセスのクエリでTXT形式の数字を数字としてクエリで抽出

    123 とテキスト形式のテーブルデータを クエリで 数字として抽出したい 関数及び クエリの作成方法を教えて下さい

  • ACCESS2007 クエリの抽出条件について教えてください

    ACCESS2007で、ルックアップ列(コンボボックス)を使用したテーブルがあります。そのテーブルをクエリにて、コンボボックスの条件別に抽出させたいのですが、その抽出条件を教えていただけませんでしょうか。 コンボボックスリストの中身(A,B,C)       A→Aのみ抽出したクエリ       B→Bのみ抽出したクエリ       C→Cのみ抽出したクエリ という風に作成したいのですが。 お忙しいところ申し訳ありません。よろしくお願いします。

  • 【Access】フィールドにつけた別名を同じクエリで抽出に使いたいです

    【Access】フィールドにつけた別名を同じクエリで抽出に使いたいです。 Access2003を使っています。 困っている状況は以下のようなもです。 ■テーブル1  ・フィールド1 ■クエリ1  ・フィールドA:フィールド1  ・フィールドB:[フィールドA]   【抽出条件】>=10 このような条件で、クエリを実行すると、 「パラメータの入力 フィールドA」というダイアログが立ち上がってしまいます。 上記載のクエリ1でフィールドAの[]は自然についてしまうのではずせません。 今はもう一つクエリを作る事でこの状況はなんとかしましたが、フィールドに別名をつける毎にクエリを作るとクエリの数が多くなってしまうので困っています。 クエリでフィールドに別名をつけた場合は、そのクエリ上でその別名を使って抽出をかけることはできないのでしょうか? よろしくお願いします。

  • アクセスの抽出クエリについて

    従業員の労務管理をアクセスで行っています。 個人個人が社員コードを入力して自分の勤怠を処理しますが、1人だけ不具合がおきています。 このような抽出クエリで特定のデータに限って抽出しない場合、どんな原因が考えられるのでしょうか。対応策をご存知の方ヘルプミーです!! テーブル テキスト型でコード番号を登録 クエリ  コード番号を指定して抽出 コード番号は0001~1000といった四桁のコードを使用 『0029』コードのみ抽出が不可能 (1) 登録してあるデータのコードを直接コピーして抽出条件に貼り付けると『"0029』と頭側一方のみ『"』が付き抽出することができる。 (2) 次ににキーボードから『0029』と入力すると『"0029"』となり、抽出できない。 (3) キーボードから『"0029』と入力すると抽出できない。 なぜか??