Access データ合算の方法

このQ&Aのポイント
  • Accessデータの合算方法についてご質問させていただきました。
  • 合算方法の手順としては、クエリーの作成で対象のテーブルをセットし、ツールバーのΣを押して集計クエリーにすることです。
  • また、JANコードのフィールドを設定する際には、クエリの新規作成でデザインビューを選択し、テーブルを複数の月分設定することで正しく動作します。
回答を見る
  • ベストアンサー

Access データ合算の方法

先日、上記タイトルの件につきまして質問させていただいたものです。 http://okweb.jp/kotaeru.php3?q=976460 合算方法をご指導いただき、 --------------------------------------------- クエリーの作成で、対象のテーブルをセットし、ツールバーのΣを押し、集計クエリーにして [JANコード][品名][個数][売上] グループ化、グループ化、合計、合計 昇順、昇順 にすればよいと思います。 ---------------------------------------------- …とのお答えをいただきました。 操作してみたのですが、フィールドをJANコードに設定しようとすると、各月のフィールドが出てきてどれを選択したら良いのかわからなくなりました。 「クエリの新規作成」→「デザインビュー」でテーブルを例えば3ヶ月分とかセットすれば良いのでしょうか?この操作自体が間違っているのでしょうか。 本当に初心者で申し訳ありません。再度、ご指導願えますでしょうか?どうぞよろしくお願い致します。

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

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.6

SELECT T.月, T.店番, T.品番, T.JAN, T.分類, T.単品, T.品名, SUM(T.[99個数]) AS [99個数計], SUM(T.[99原価]) AS [99原価計], SUM(T.[99売価]) AS [99売価計] FROM (SELECT "200404" AS 月,* FROM [POSEKI200404ストア] UNION ALL SELECT "200405", * FROM [POSEKI200405ストア] UNION ALL SELECT "200406", * FROM [POSEKI200406ストア] UNION ALL SELECT "200407", * FROM [POSEKI200407ストア]) AS T GROUP BY T.月, T.店番, T.品番, T.JAN, T.分類, T.単品, T.品名 上記をそのままコピーしても、保存できませんか?

amulet14
質問者

お礼

申し訳ありません!!回答を見て自分の間違いに気付きました。完成品を作っていただきありがとうございました。全て動作確認し、求めていたものができました!ここから色々と広げていきたいと思います。またお世話になるかもしれませんが、どうぞよろしくお願い致します。 半日あまりも振り回してしまい申し訳ありませんでした。心から感謝いたします。本当にありがとうございました。

その他の回答 (5)

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.5

> SELECT T.店番, T.品番, T.JAN, T.分類, T.単品, T.品名, SUM(T.[99個数]) AS 99個数計, SUM(T.[99原価]) AS 99原価計, SUM(T.[99売価]) AS 99売価計 SELECT T.月, T.店番, T.品番, T.JAN, T.分類, T.単品, T.品名, SUM(T.[99個数]) AS 99個数計, SUM(T.[99原価]) AS 99原価計, SUM(T.[99売価]) AS 99売価計 > FROM (SELECT "200404" AS 月,* FROM POSEKI200404ストア > UNION ALL > SELECT "200405", * FROM POSEKI200405ストア > UNION ALL > SELECT "200406", * FROM POSEKI200406ストア > UNION ALL > SELECT "200407", * FROM POSEKI200407ストア) AS T > GROUP BY T.店番, T.品番, T.JAN, T.分類, T.単品, T.品名 GROUP BY T.月, T.店番, T.品番, T.JAN, T.分類, T.単品, T.品名 で、月ごとに集計された結果が表示されると思います。

amulet14
質問者

お礼

最終的には作成していただいて大変恐縮です。ありがとうございます。ただ…保存されないのです。 「SELECTステートメントが間違っている予約語や引数を含んでいるか、区切り記号が正しくありません」 …と出ます。区切り記号はじっくり見たのですが間違えている様子はないのですが…。理解力がなくて申し訳ありません。まだお時間がありましたらご指導願います。

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.4

> 集計クエリですが、一番右の項目「月」は通常項目になく これは、ユニオンクエリでフィールドを作成しないといけないです。 > SELECT "200304" AS 月,* FROM 0304POS        ~~~~~~~~~この部分です。 > UNION ALL > SELECT "200305", * FROM 0305POS > UNION ALL >     : > SELECT "200403", * FROM 0403POS で、↑のクエリを元に集計クエリを作成してくださいね。

amulet14
質問者

お礼

早い回答をありがとうございます。質問なのですが、 ----------------------------------------- SELECT T.店番, T.品番, T.JAN, T.分類, T.単品, T.品名, SUM(T.[99個数]) AS 99個数計, SUM(T.[99原価]) AS 99原価計, SUM(T.[99売価]) AS 99売価計 FROM (SELECT "200404" AS 月,* FROM POSEKI200404ストア UNION ALL SELECT "200405", * FROM POSEKI200405ストア UNION ALL SELECT "200406", * FROM POSEKI200406ストア UNION ALL SELECT "200407", * FROM POSEKI200407ストア) AS T GROUP BY T.店番, T.品番, T.JAN, T.分類, T.単品, T.品名 ----------------------------------- このように作成しました。集計クエリを作成する際、やはり「月」の項目はありません。間違いを正していただけますでしょうか?よろしくお願い致します。

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.3

> 毎度合算する月が変わるのです。 こういった使い方なら、1年分を合算するユニオンクエリを1つ作成しておいて、 必要な月を別の集計クエリで抽出するようにしておけばいいと思います。 SELECT "200304" AS 月,* FROM 0304POS UNION ALL SELECT "200305", * FROM 0305POS UNION ALL     : SELECT "200403", * FROM 0403POS 上記を、SQLビューで作成し「POSデータ」という名前で保存します。 で、新規クエリの作成で、上記のクエリ(POSデータ)を選び、必要な月を 抽出し、集計する集計クエリを作成すればいいです。 フィールド|JANコード |商品名  |個数   |売上   |月  テーブル|POSデータ |POSデータ |POSデータ|POSデータ|POSデータ    集計|グループ化|グループ化|合計   |合計   |Where 条件  抽出条件|     |     |     |     |BETWEEN [開始年月] AND [終了年月]   このようなクエリを作成しておけば、実行時にパラメータ要求がくるので、 開始年月:200304 終了年月:200306 のように入れると、該当する月分のデータが集計されます。 (図がずれると思いますので、テキストエディタ等にコピーして確認してください (^^ゞ)

amulet14
質問者

お礼

毎度毎度ありがとうございます。完成にとても近くなりました。でも実行できないのです。また補足に書かせていただきます。何度も申し訳ありません。

amulet14
質問者

補足

集計クエリですが、一番右の項目「月」は通常項目になく直接入力しました。その結果、 フィールド|式1: [月] テーブル |POSデータ 集計   |Where 条件 抽出条件 |BETWEEN [開始年月] AND [終了年月] となりました。ここで既に自分が間違えているような気もしますが…。 するとパラメータで「月」を聞いてきます。何を入力したら良いのかわかりません。とりあえず進むと、次に「開始年月」と「終了年月」を聞かれます。これを入力して実行すると…全て空欄です。不完全なので当然なのでしょうが、どこが悪いのかわからないのです。あと少しなのですが…ご指導よろしくお願い致します。何度も申し訳ありません。

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.2

> SELECT T.JANコード, T.店番, T.品名, SUM(T.個数) AS 個数計, SUM(T.売価) AS 売価計 > FROM [SELECT * FROM 0304POS > UNION ALL > SELECT * FROM 0305POS]. AS T > GROUP BY T.JANコード, T.店番, T.品名; 1) デザインビューとSQLビューをいったりきたりすると、SQL文が変わって  しまいます。  で、    SELECT ~ FROM (SELECT ~ FROM ~ UNION ALL SELECT ~ FROM ~) AS T  のような文だと、  SELECT ~ FROM [SELECT ~ FROM ~ UNION ALL SELECT ~ FROM ~]. AS T    のように勝手に修正されてしまいますので、括弧の部分をその都度、元に  戻すようにしてください。 2) > 、とりあえず「0304POS」と「0305POS」を合算させてみようと思い 数値から始まるオブジェクト名の場合、 SELECT ~ FROM (SELECT ~ FROM [0304POS] UNION ALL SELECT ~ FROM [0305POS]) AS T のように [] でくくってみてください。

amulet14
質問者

お礼

何度も本当にありがとうございます!とてもわかりやすいです。出来ました。とりあえず2ヶ月分を合算できたので、あとは自分で調整しながら12ヶ月分を合算させてみたいと思います。更に教えて欲しい事があるのです。補足に記載いたします。

amulet14
質問者

補足

ご指導いただきましたSQL文を保存は出来るのでしょうか?例えば「4月~6月まで合算して」とか「7月~12月まで合算して」というように、毎度合算する月が変わるのです。12ヶ月分のSQL文を作成しておいて、変更があるたびに必要のない月を削除したりして使用したら便利かなと思いました。また、このSQL文はテーブルでの合算を例にしていただきましたが、クエリでも合算可能なのでしょうか?どうぞご指導よろしくお願い致します。

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

ユニオンクエリを使いましょう。 テーブルが、 売上データ04 売上データ05   : 売上データ03 のようにあったとして、 SELECT T.JANコード, T.品名, SUM(T.個数) AS 個数計, SUM(T.売上) AS 売上計 FROM ( SELECT * FROM 売上データ04 UNION ALL SELECT * FROM 売上データ05 UNION ALL      : SELECT * FROM 売上データ03) AS T GROUP BY T.JANコード, T.品名 上記のSQL文を、クエリの新規作成で、テーブルを選択せずにOKを押し、 「表示」⇒「SQLビュー」ででてきた画面にコピーしてみてください。

amulet14
質問者

お礼

ご回答ありがとうございます! 上記、補足にありますようにちょっと動作がおかしいです。多分、私がおかしいのでしょうけど。必ず覚えたい操作ですので、どうぞよろしくお願い致します。

amulet14
質問者

補足

上記回答を基に、とりあえず操作してみました。 -------------------------------- SELECT T.JANコード, T.店番, T.品名, SUM(T.個数) AS 個数計, SUM(T.売価) AS 売価計 FROM [SELECT * FROM 0304POS UNION ALL SELECT * FROM 0305POS]. AS T GROUP BY T.JANコード, T.店番, T.品名; -------------------------------- データ名を変更し、とりあえず「0304POS」と「0305POS」を合算させてみようと思い上記のように貼り付けました。実行できるのですが、JANコードにパラメータを入れてというメッセージが出ます。きっとSQL文が間違っているのだと思うのですが見ていただけないでしょうか。 SQL文というのは初めて使用するので知識が全くなく、あちこち調べて操作していますがトンチンカンな事をしていましたら大変申し訳ありません。

関連するQ&A

  • Access データ合算について

    Accessの初心者です。 Accessで毎月のPOSデータ(売上データ)を管理しています。月別にテーブル保存しているのですが、そのデータを合算するにはどう操作したらよろしいのでしょうか。 テーブルには1年間(4月~3月)が月ごとに保存されています。合算させたいのは「JANコード」の13ケタです。このJANコードが一致したデータの個数と売上を合算させたいのです。データ量は1ヶ月につき25万件(アイテム)あります。ExcelはちょっとできるのでExcelでの処理なら思いつくのですが、なんせデータ量が多くて全てを読み込むことが出来ないのです。 データは左から 「ID」「JANコード」「品名」「個数」「売上」 となっています。 初心者なものですから、質問が足りなかったら申し訳ありません。どうぞよろしくお願い致します。

  • アクセス クエリ・集計・計算方法について

    アクセスの集計機能を使用して、品名毎の数量の合計と金額の合計を算出しようとしていますが、 思うようにできません。どなたか教えてください。 クエリのフィールドを左から・・・ (1)年月: Format([日付],"yyyy/mm")(集計:グループ化) (2)品名(集計:グループ化) (3)品名のカウント(集計機能:カウント) (4)単価(集計:グループ化) (5)金額: [単価]*[品名のカウント](集計:グループ化) このような形でクエリを実行していますが、すべての注文が1つだけなら問題ないのですが、実際には品名には数量が掛けられている場合もあり、現在設定しているクエリ設定では正しい数量の合計と金額の合計を出すことができません。どうか集計方法をご教授いただけないでしょうか。よろしくお願いします。 ■現在のテーブルの設計とリレーションを明記します。 【A】顧客テーブル (1)顧客ID (2)発注コード (3)氏名 【B】商品テーブル (1)商品ID (2)品名 (3)単価 【C】注文テーブル (1)注文ID (2)日付 (3)顧客ID 【D】注文明細テーブル (1)注文明細ID (2)注文ID (3)商品ID (4)数量 リレーション 【A】(1)-【C】(3) 【B】(1)-【D】(3) 【C】(1)-【D】(2)

  • accessデータ活用法

    編集方法で悩んでおります。 受注テーブル ID オートNo. 品名 テキスト 数量 数値 品名テーブル ID オートNo. 品名 テキスト とあるとします。 テーブル同士は、リレーションはされておらず、 受注フォームのリストボックスのコントロールソースに品名テーブルが参照されています。 今回、品名を分類コードで仕訳したいのですが... せっかく品名が入力されているのでそれを引用したいです。 そこで、 (1)新たに分類テーブルを作成し組込む (2)品名テーブルの行を増やし、分類コードのフィールド追加 (3)品名を置換えや条件分岐関数で分類コードに変換 ちなみに、品名/分類は10種類以内です。 (1)(2)はいろいろ試しましたが、受注テーブルの既存データのクエリ結果が得られません。 そもそも、考えが間違ってるでしょうか??? 宜しくお願いします。

  • access2000です。

    こんばんは。 いつもお世話になります。 アクセスで困っております。教えてください。 テ-ブル1(原料マスター) コード  品名 100    A 200     B 300    C テーブル2(入出庫明細) 日付  コード  入庫  出庫 4/1   100    10 4/2   100          10 4/2      200    10 テーブル3(月初在庫) コード  在庫 100    10 200    100 300      50 クエリー1(入出庫の月合計) テーブル2より コード  入庫合計  出庫合計 100     10     10 200     10 クエリー2(在庫の算出) テーブル1の全コードを使用 コード  月初在庫 入庫合計 出庫合計 現在庫 100      10       10       10        10 200      100        10 300      50 となり、入庫や出庫にデータが入っていないコードのものは、現在庫が表示されません。入庫の合計は集計を合計としているだけです。現在庫はフィールドにビルドでテーブル1の月初在庫+入庫合計-出庫合計と入力しており、集計は演算としています。データの入っていないところを無視させて現在庫を全て表示させたいのです。 宜しくお願い致します。

  • Access97でテーブルのデータを並べ替える方法

    Access97で(OSは98)テーブルで入力したデータをクエリーで並べ替えをかけるのですが、 そのフィールドのデータを昇順、降順以外で自分の思うような順番で 並べ替えることができますか? 例) パソコン、デジタルカメラ、プリンタ、メディアのような順番で。。。 今後他のテーブルと結合するのでこれら以外にコード番号を入力する フィールドを作り、これらをこの順番で入力すればよいのかもしれませんが Excelのユーザー設定リストを並べ替えで使うような機能がAccessにあったかと思いまして。よろしくお願いいたします。

  • Access2013 不一致抽出

    不一致抽出方法についてご教授いただけないでしょうか? 下記のようなテーブルA、テーブルBがありお互いの差を抽出結果として表示したいと思っています。 比較したいテーブルが複数ある為抽出フォーム側のテキストボックスにて抽出条件を入れたいと思っています。 フォーム1のテキストボックス1とテキストボックス2に比較したいテーブルA、テーブルBと入力したいと考えています テーブルA JANコード    品名  店番 4912345678901 品名1  00001 4923456789012 品名2  00001 4934567890123 品名3  00001 4945678901234 品名4  00001 テーブルB JANコード    品名  店番 4912345678901 品名1  00002 4934567890123 品名3  00002 4945678901234 品名4  00002 4956789012345 品名5  00002 抽出結果 JANコード    品名  店番 4923456789012 品名2  00001 4956789012345 品名5  00002

  • ACCESS クエリーでソートの不具合

    ACCESS2000 ACCESS クエリーでソートの不具合 Xテーブル 品コード 明細番号 昇順   昇順 作成したテーブルを見ると一部 111 01 111 02 111 03 222 01 333 01 111 04 <=分かれて表示されている。 データは3000件程あるのですが、アクセスの不具合? データはグループでは集計されるのでヌルが入っていたりはしません。 体験のある方いらしゃいますか?

  • Accessでのデータ加工方法を教えてください

    アクセス(Microsoft Access)で複数のデータから条件にあったデータを抽出する方法を知りたいです。 1:JANコード,原価 と並んだ20万件のテーブルと、 2:商品番号,JANコード,数量 (商品番号違いの同一JANコードがあり、JANコードなしの商品番号はありません。2のデータのJANコードはデータ1に必ずあります) と並んだ40万件のテーブルがあります 2のデータに1のデータからJANコードを基準にして、原価をもってきて 3:商品番号,JANコード,数量,原価 のデータを作成したいのですが、どのような手順で行えばいいのでしょうか? JANコードを軸にして1のデータから2のデータに当てはめていくのですが、 1のデータの「原価」は1点あたりの原価、 3のデータの「原価」は『1のデータの「原価」』×『2のデータの「数量」』の形にしたいと思っています。 アクセス初心者で説明が上手く出来ないのですが、この説明でわかった方いらっしゃいましたら、お願いいたします。

  • アクセスで折れ線グラフを作成。日付表示

    テーブルに品名、計測日、大きさ、重さ、糖度などの項目があり、 折れ線グラフをグラフウィザードで作成しようとしています。 アクセスは2002です。 選択クエリで各品名を選び各品名ごとにグラフを作成したいので クエリでやってみるのですが軸を計測日にすると大きさ、重さ、糖度が 合計や平均でしか選択できません。 軸をドラックせず大きさや重さを選択するとうまくいくのですが ざっくりの日付でもいいので表示したいのですが調べても分からず困っています。 どうかご指導お願い致します。

  • [ACCESS]フォームで、レコードを抽出して編集するには?

    ACCESS2003、初心者です。 納品テーブルを作成して、それをフォームで入力しています。 フィールドは、 ID,製品名,セイヒンメイ,メーカー,仕入先,単価,在庫数,残高 です。 納品テーブルのレコードを元にフォームを作成したいのですが悩んでいます。 (1).納品テーブルから、表形式で商品レコードを並べて表示させる (2).セイヒンメイでグループ化。 (3).セイヒンメイを昇順で並び替え (4).在庫数、残高を編集 (1)~(4)の作業を行いたいのですが、いろいろ試した結果、うまくできません。 テーブル作成クエリ→実行→在庫フォーム開く(この場合のソース元はクエリ) のパターンで可能だったのですが、フォームを開いた時にグループ化や並び替えを行う方がスマートなので実現したいのです。 もしくは、フォーム上でコマンドボタンを押せばグループ化や並び替えができればそれでも構いません。 いろいろ調べて、SQL(GROUP BYやHAVING)を使わないと駄目なようですが、どのようなコードを書いたらよいのでしょうか?

専門家に質問してみよう