Accessクエリ抽出・演算についての質問

このQ&Aのポイント
  • Accessクエリを使用して、特定の条件に一致するレコードを抽出し、演算を実施する方法について質問します。
  • CSVデータをテーブルに取り込み、特定の条件に一致する商品名『単3乾電池』の出荷数量を求め、10で割り切れるレコードを抽出したいです。
  • 演算結果(10で割った後の整数)を合算して合計値をクエリの演算結果として表示したいです。すでに抽出条件のクエリは作成済みです。
回答を見る
  • ベストアンサー

Access クエリ 抽出・演算

Access クエリについてご質問させていただきます。 テーブルのデータを特定の条件に一致するレコードだけ抽出し、演算を実施したいです。 (1):CSVデータをテーブルに取り込みます。 テーブルは左から『取引No』『部門コード』『部門名』『発注入力日』『担当者名』『発注日』『伝票No』『伝票行No』『商品コード』『商品名』『入数』『発注数(入力数)』『発注数量※1』『発注金額※2』『出荷日』『出荷数量※3』『出荷金額※4』となっております。 ※1:発注数量は入数×発注数が計算済みです。 ※2:発注金額は発注数量×単価で小数点以下切り捨てで計算済みです。 ※3:出荷数量は入数×出荷数が計算済みです。 ※4:出荷金額は出荷数量×単価で小数点以下切り捨てで計算済みです。 (2):クエリを使用して、商品名が『単3乾電池』の出荷数量を10で割り、10で割り切れるレコードを求めたいです。 (3):(2)の演算結果(10で割った後の整数)を合算して合計値をクエリの演算結果として表示したいです。 ※(2)の抽出条件でのクエリをすでに作成済みで、合計したクエリを作成したいです。 どのようにすればよろしいでしょうか?

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

No3です。 No3で書くべきことだったのですが、 https://okwave.jp/qa/q9691957.html で、回答した中で、     If Dir(strPath & strFileName) <> "" Then       Kill strPath & strFileName     End If をFor Each文の中に入れ込んでいましたが、これでは 最後に読み込んだクエリのデータみExcelに残るという ことになるので、この部分を     For Each qdf In db.QueryDefs の前か、     Set db = CurrentDb の前に移動してください。 これをNo3のところに入れておこうとしましたが、失念 していて、また回答先でも回答の訂正や、回答の要訂正箇所に 後で気がつき二重にも迷惑をかけることになり、申し訳ありません。

その他の回答 (3)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

個別の商品のレコードのうち、出荷数量が10で割り切れるものを 商品ごとに10で割った整数値を合計するということであれば、 テーブル名を「T取引」とすると一つのSQL文で書けば、 SELECT Tmp.商品コード, Tmp.商品名, Tmp.出荷数量の合計, Int([出荷数量の合計]/10) AS 合算合計値 FROM (SELECT T取引.商品コード, T取引.商品名, Sum(T取引.出荷数量) AS 出荷数量の合計 FROM T取引 WHERE ([出荷数量] Mod 10)=0 GROUP BY T取引.商品コード, T取引.商品名 ORDER BY T取引.商品コード) AS Tmp; のようになります。Accessでは、このSQL文は一旦保存して再度デザインビューで開くとAccess風に変形されます。このようにサブクエリを使うか、 あるいは二つのクエリで対応するようになります。 二つのクエリとは、 SELECT T取引.商品コード, T取引.商品名, Sum(T取引.出荷数量) AS 出荷数量の合計 FROM T取引 WHERE ([出荷数量] Mod 10)=0 GROUP BY T取引.商品コード, T取引.商品名; を、「Q合計」という名前にし、 SELECT Q合計.商品コード, Q合計.商品名, Q合計.出荷数量の合計, Int([出荷数量の合計]/10) AS 合算合計値 FROM Q合計 ORDER BY T取引.商品コード; を、開けば、 「個別の商品のレコードのうち、出荷数量が10で割り切れるものを 商品ごとに10で割った整数値を合計する」 という結果が得られます。 なお、この質問の場合は取引No』『部門コード』『部門名』『発注入力日』 などの不要なフィールドは除いています。

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

今晩は回答ではありません。 >(1):CSVデータをテーブルに取り込みます。  テーブルは左から『取引No』『部門コード』『部門名』『発注入力日』  『担当者名』『発注日』』「伝票No』『伝票行No』『商品コード』  『商品名』『入数』『発注数(入力数)』『発注数量※1』『発注金額※2』  『出荷日』『出荷数量※3』『出荷金額※4』となっております。  ※1:発注数量は入数×発注数が計算済みです。  ※2:発注金額は発注数量×単価で小数点以下切り捨てで計算済みです。  ※3:出荷数量は入数×出荷数が計算済みです。  ※4:出荷金額は出荷数量×単価で小数点以下切り捨てで計算済みです。 ★これではCSVの情報をそのまま取込み後処理だけです。  Accessの機能を生きてきません  Accessの機能を発揮させるにはCSVの情報を複数テーブルに  展開する必要があります。  その一つのテーブルが商品マスタです。  M商品:『商品コード』『商品名』『入数』『発注数(入力数)』『発注単価』『出荷単価』  関心をお持ちでしたらコメント下さい。  組合わせるテーブルはCSVのテーブルとM商品を含めて  最低6つのテーブルにぶんかい展開します >(2):クエリを使用して、商品名が『単3乾電池』の出荷数量を  10で割り、10で割り切れるレコードを求めたいです。 ★この『単3乾電池』はどの様にクエリに組込まれていますか    『単4乾電池』等他の商品にも対応出来ていますか

  • kkkkkm
  • ベストアンサー率65% (1608/2445)
回答No.1

商品名の抽出条件を "単3乾電池" にして 新規のフィールドに 式: [出荷数量] Mod 10 抽出条件で 商品名の抽出条件と同じ行に 0 として 新規のフィールドに 式2: Int([出荷数量]/10) 式2を合計します。Σ集計で集計行を出します。

関連するQ&A

  • Access クエリ 抽出条件

    Access の クエリ における 抽出条件 の 書き方についてご質問させていただきます。 クエリには、左から『商品名』、『出荷数量』、『注文数量』の3列がございます。 各レコードの『出荷数量』フィールドの値と『注文数量』フィールドの値を比較し、 『注文数量』フィールドの値の方が大きいレコードだけを抽出したいのですが、どのように抽出条件を記載すればよろしいでしょうか? 元データは1つのテーブルに格納されています。 例:注文数量:500、出荷数量:200など出荷数量が少ないレコードを抽出対象 注文数量:100、出荷数量:100など注文数量=出荷数量レコードは抽出対象外

  • アクセスのクエリの作り方

    初心者なので教えてくださいませんか? アクセスでテーブルを複数作成して、それをクエリで結合するときに、どのテーブルからどのフィールドを選べばいいのかわかりません。 例えば・・・ 売上テーブル:NO 売上日 商品コード 数量 商品テーブル:商品コード 商品名 単価 この二つのテーブルを結合するクエリを作ります。 NO 売上日 商品コード 商品名 単価 数量 上記のフィールドを使用したいのですが、このとき、商品コードをどちらのテーブルのを使ったらよいのでしょう。 その判断は何からしたらよいのでしょうか。 うまく説明できているかわかりませんが、よろしくお願いします。

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

    テーブルA 商品名   発注数  発注日      金額 AAAAA    1      2007/10/1  \\\\ AAAAB    20     2007/11/14   \\  AAAAA  15      2007/11/19  \\\\ AAAAA  15      2007/11/20   \\\\ AAAAA   6      2007/11/30  \\\\ AAAAA   28      2008/12/1  \\\\ AAAAA   2      2008/12/15   \\\\ クエリA (商品AAAAAの月間発注数の合計) 発注数合計 発注月 1      2007/10 36     2007/11 30     2007/12 というところまでクエリで出来たのですが、これを毎月自動的に先月分だけ表示するようにしたいのですがどうすればよいでしょうか? 初歩的な質問で申し訳ございませんが、初心者なのでなるべく簡単な方法を教えて下さい。宜しくお願い致します。     

  • Access 切り捨て合計クエリ

    Accessのクエリにて以下の集計・抽出を作成したいです。 抽出クエリの条件 (1):テーブルから商品名フィールで商品で始まるレコードを抽出する (2):抽出したレコードの数量フィールドの値を2000で割る (3):割り算後、小数点以下(1未満)が発生した場合は、0とする。 集計クエリの条件 (4):抽出クエリの条件式(1)~(3)を実施したのち、商品ごとに切り捨て後の整数を合算する ※数量が2000以上のレコードを抽出したいです。 どのようにすればよろしいでしょうか?

  • ACCESS クエリの抽出のやり方

    初投稿になります。よろしくお願いします。 無礼な事、不明瞭な事がありましたらご指導宜しくお願いします。 ACCESS2007 クエリで困っています。 テーブル_出荷 【コード{主}】【出荷先(1)】【出荷先(2)】 テーブル_明細 【コード】【種類】【数(1)】【数(2)】と構成されたテーブルがあります。 フィールド【コード】はリレーションシップで繋ぎました。 クエリで 【コード(出荷)】【種類{抽出条件:果物}】【数(1)】【数(2)】【種類{抽:野菜}】【数(1)】【数(2)】 とテーブル_出荷・テーブル_明細・テーブル_明細_1で選択クエリをつくりました。 クエリを実行すると無事表示されたのですが、後日データを更新したら 表示されなくなりました。 おそらく【コード(出荷)】に対して【種類{抽:野菜}】が存在しないレコードが出てきたからだと思います。 存在しない場合は「空白」か「0」で表示したいのですが、何か方法がないでしょうか?

  • Accessのクエリ集計について

    Accessのクエリ集計について kamuycikapです。 テーブルを集計するクエリについて悩んでいます。 以下がテーブルの状況と試行錯誤しているクエリ。 そして実行結果の箇条書きです。 非常に長文ですが、識者の方のアドバイスをお願い致します。 --ここから <データベース構造:リレーションシップ> リレーションシップとテーブルの構成は下記の通りです。 -->がリレーションシップです。 ■テーブルA      ■テーブルB    ■テーブルC    ■テーブルD 納品書コード ーー> 納品書コード ーー> 納品書コード  ーー> 納品書コード 仕入数          商品コード  ーー> 商品コード   ーー> 商品コード                               商品連番    ーー> 商品連番                               出品数量        出品連番                               商品名           発送個数                               色             発送日付                               サイズ                               売値 <作りたいデータ> 納品書コード、商品コード、商品連番、商品名、色、サイズ、売値、仕入数、出品数量、発送個数、出品在庫数、倉庫在庫 <クエリ> ○グループ  納品書コード、商品コード、商品連番、商品名、色、サイズ、売値、仕入数、出品数量 ○合計(集計)  発送個数 ○出品在庫数(演算)  [出品数量]-[発送個数] ○倉庫在庫(演算)  [仕入数]-[発送個数] <データ状況> テーブルCのデータは約300レコードありますが、そのうち20件ほどしか商品が発送されていない為、テーブルDのデータは20件しかありません。 <望む結果> テーブルCのデータが全て表示され、紐つけられたテーブルDのデータがが存在する場合は、発送個数を表示し出品在個数を演算する。 演算した出品在個数を利用して、倉庫在庫も演算する。 <クエリの実行結果> テーブルCのデータが全て表示されず、テーブルDに紐つけられたレコードのみが表示されるため、約300件のデータではなく、テーブルDに入力されている20件しか表示されない。 --ここまで 目的は、テーブルCのデータを全て表示し、発送情報がテーブルDに入力されているデータについては演算結果を表示する事です。 現状では、テーブルDのデータしかテーブルCのレコードが表示されません。。。。 どうすれば目的のデータを収集できるクエリが作成で切るのか、識者の方のアドバイスをお願いします。

  • こんなクエリーを作れますか

    mySQL+PHPを使い、社内の支店間で不良在庫を融通するシステムを考えています。 (注)実際には、商品名や支店名に対してマスターテーブルを使いコード化するのでしょうが、    説明のため簡略化しています。また項目名も説明のため日本語にしています。 不良在庫テーブル(dt_stock) 項目名: 在庫コード、商品名、在庫数量、在庫支店名       ※在庫コードは自動発番 各支店が不良在庫の商品名と数量を入力します。 発注テーブル(dt_order) 項目名:発注コード、商品名、発注数量、発注支店名、在庫支店名      ※発注コードは自動発番 各支店が、他支店の不良在庫合計を検索し、そこから支店で必要な商品を発注します。 処理手順 各支店は、個々の在庫を知る必要はなく、商品別の在庫合計を見て必要な発注数量を決めます。 そして、別のプログラムで、発注の合計を各支店の在庫数量に自動分配します。 分配が終われば、発注分だけ在庫を減らし、発注データは既発注としてテーブルから削除されます。 問題点 当初は、dt_stockから商品ごとの在庫合計を表示するクエリー       dt_orderから商品ごとの発注合計を表示するクエリー をそれぞれ作成し、 これらのクエリを結合して、商品ごとの在庫と発注の合計をリストにするクエリーを作成しました。 (当然のことながら、各支店の在庫と発注の合計を表示するクエリーなので、当然、在庫支店や発注支店の情報は含まれていません) しかし、よく考えると、ある支店で不良在庫として計上している商品に対しては、発注をかけることはありえないので、誤って発注を掛けられないように、商品ごとの在庫と発注の合計をリストにするクエリーで、自分の支店の在庫が入力されている商品のデータを除外するようにはできないでしょうか。 私は、mySQLを使うのは初めてですが、ACCESSの経験はあります。「パラメータクエリーを使えば出来るのかな」とも思いますが、外しているかもしれません。 なんとかヒントだけでもいただければありがたいです。

  • Accessのクエリによる集計が出来ない

    Accessのクエリによる集計が出来ない kamuycikapです。 OKWaveで様々な方のアドバイスを頂きながら、慣れないAccessと悪戦苦闘しております。 一昨日、計算したい表を作成する為にOKWaveに質問を載せました。 http://okwave.jp/qa/q5549286.html 無事に上記のアドバイスでリレーションのオプション設定を行い、集計計算したいクエリの結果を表示することが出来ました。 その表を元にして 下記の質問でアドバイス頂いた方法による集計を行おうとしたのですが、集計出来なくて困っています。 http://okwave.jp/qa/q5544785.html データベースの構成とキーは以下のとおりです。 --ここから <データベース構造:リレーションシップ> リレーションシップとテーブルの構成は下記の通りです。 -->がリレーションシップです。 Kがキーになります。 ■テーブルA      ■テーブルB    ■テーブルC    ■テーブルD K納品書コード --> K納品書コード --> K納品書コード  --> K納品書コード 仕入数          K商品コード  --> K商品コード   --> K商品コード                             K商品連番    --> K商品連番                             出品数量        K出品連番                             商品名           発送個数                             色             発送日付                             サイズ                             売値 ※テーブルCからテーブルDへのリレーションオプションを「’テーブルC’の全レコードと’テーブルD’の同じ 結合フィールドのレコードだけを含める。」としています。 <作りたいデータ> 納品書コード、商品コード、商品連番、商品名、色、サイズ、売値、仕入数、出品数量、発送個数、出品在庫数、倉庫在庫 <クエリ> ○グループ  納品書コード、商品コード、商品連番、商品名、色、サイズ、売値、仕入数、出品数量 ○合計(集計)  発送個数 ○出品在庫数(演算)  [出品数量]-[発送個数] ○倉庫在庫(演算)  [仕入数]-[発送個数] <データ状況> テーブルCのデータは約300レコードありますが、そのうち20件ほどしか商品が発送されていない為、テーブルDのデータは20件しかありません。 <望む結果> テーブルCのデータが全て表示され、紐つけられたテーブルDのデータがが存在する場合は、発送個数を表示し出品在個数を演算する。 演算した出品在個数を利用して、倉庫在庫も演算する。 <クエリの実行結果> テーブルCのデータが全て表示され、テーブルDに紐つけられたレコードも表示されるが、テーブルDに入力されている20件のデータが商品連番(テーブルCのフィールド)ごとに集計されない。 --ここまで <目的> お店に出品された商品は、日を分けて少しずつ売れていきます。(一日で全部売れることもありますが....) 従って、出品された商品(テーブルCのデータ)に対して売れていく数(テーブルDの複数のレコード)のデータがぶら下がっている形になります。 このようなデータベースですので、出品した商品が何個売れたかを計算する為には、商品に対する売れた個数を集計(合計)しなければなりません。 <結果> テーブルCの商品連番ごとの発送個数を集計したいのですが、テーブルDの出品連番ごとの集計になっている様子です。 <頂きたいアドバイス> 上記のデータベースとクエリで、テーブルCの商品連番に紐ついたテーブルDに格納されている発送個数の合計値を集計するための方法 以上、識者の方のアドバイスをお願い致します。

  • accessで困っています

    access2000で、簡単な在庫管理ソフトを作っています。 商品マスタ(商品No、商品名、在庫初期値) 入荷マスタ(日付、商品名、入荷数) 出荷マスタ(出荷履歴No、日付、得意先名、商品名、出荷数) をテーブルに設け、商品を出荷入力すれば、初期値ー出荷数+入荷数をクエリ上で計算し、在庫数とし表示させています。 これに、出荷入力をしてそれを納品書として印刷させます。当たり前ですが、1商品出荷につき1枚の納品書しか印刷されません。 商品マスタに、商品名2や商品名3を設け、1枚に3種類まで印刷させようとすると、在庫計算方法がよく分からなくなります。 初心者で、どの様に作っていけば良いのかわかりません。 皆様のお知恵をお貸しいただけますでしょうか。 宜しくお願い致します。

  • Accessでクエリを作った際の順番

    Access2003の質問です。 以下のテーブルがあってそれらの項目を抜き出してクエリを作っています。 テーブル1 ・商品CD ・商品名 ・単価 テーブル2 ・No ・売上日 ・得意先CD ・商品CD ・数量 テーブル3 ・得意先CD ・得意先名 ・フリガナ ・郵便番号 ・住所 ・TEL ・担当者CD ・DM テーブル4 ・担当者CD ・担当者名 クエリ ・No(テーブル2) ・売上日(テーブル2) ・得意先CD(テーブル2) ・得意先名(テーブル3) ・担当者CD(テーブル3) ・担当者名(テーブル4) ・商品CD(テーブル2) ・商品名(テーブル1) ・単価(テーブル1) ・数量(テーブル2) クエリを作って、データシートビューに切り替えるとなぜか得意先CDで昇順に並んでいます。 もちろんNoで並べ替えを設定すれば、Noで並べ替わるのですが、なぜ得意先CDで昇順に並ぶのでしょうか? Noが一番左にあるので、Noで並べ替わりそうなものですが・・ 何も並べ替えを設定しないとどのような基準で並ぶのでしょうか? わかる方がいれば教えてください。

専門家に質問してみよう