Accessのテーブルの差額を出すピボット方法

このQ&Aのポイント
  • Access2007を使用して2つのテーブルのデータをピボットで表示したい場合、ユニオンクエリを使ってテーブルAとテーブルBをまとめ、ピボットを作成します。
  • ピボットを作成する際には、各テーブルの区分、品番、金額、数量の列を考慮し、ピボットテーブルでそれぞれの列の合計値を表示します。
  • そして、差額の計算を行うために、差額列を追加し、テーブルAの金額からテーブルBの金額を引いた値を表示します。
回答を見る
  • ベストアンサー

Access2つのテーブルの差額を出すピボット

Access2007を使用しています。 以下のような2つのテーブルがあります。 <テーブルA> 区分 品番 金額  数量 A  001 10000  10 A  S12 5000   5 A  002 8000   8 A  001 6000   6 <テーブルB> 区分 品番 金額  数量 B  001 2000  2  B  S12 3000  3 このデータを元に、以下のような結果をピボットで表示したいと思っています。       区分       A  |  B   |合計 品番  数量 金額|数量 金額 |数量 金額 差額(A-B) 001 16 16000| 2 2000 | 18 18000 14000 002 8 8000 |      | 8  8000  8000 S12 5 5000 | 3 3000 | 8  8000  2000 テーブルAとBをユニオンクエリでまとめ、ピボットを作って みたのですが、差額の部分が出せず・・・ どうぞよろしくお願いします。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

グループ化した場合、GROUP BY 句で指定しない項目は集計関数を使う 必要があります。(1)を全部書いてしまうと、次のようになります。 SELECT A.品番 AS 品番,SUM(A.数量) AS A数量,SUM(A.金額) AS A金額, SUM(B.数量) AS B数量,SUM(B.金額) AS B金額 FROM テーブルA AS A LEFT JOIN テーブルB AS B ON A.品番=B.品番 GROUP BY A.品番 UNION SELECT B.品番 AS 品番,SUM(A.数量) AS A数量,SUM(A.金額) AS A金額, SUM(B.数量) AS B数量,SUM(B.金額) AS B金額 FROM テーブルA AS A RIGHT JOIN テーブルB AS B ON A.品番=B.品番 GROUP BY B.品番 ちょっと説明不足でしたね。

taiyou55
質問者

お礼

ありがとうございます。 このままだと、各数量と各金額が2倍の値になってしまったので、ちょっと考えてみます。 とても助かりました。ありがとうございました。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

(1)クエリ SELECT A.品番 AS 品番,SUM(A.数量) AS A数量,SUM(A.金額) AS A金額, SUM(B.数量) AS B数量,SUM(B.金額) AS B金額 FROM テーブルA AS A LEFT JOIN テーブルB AS B ON A.品番=B.品番 UNION SELECT B.品番 AS 品番,SUM(A.数量) AS A数量,SUM(A.金額) AS A金額, SUM(B.数量) AS B数量,SUM(B.金額) AS B金額 FROM テーブルA AS A RIGHT JOIN テーブルB AS B ON A.品番=B.品番 (2)目的のSQL SELECT 品番,A数量,A金額,B数量,B金額, NZ(A金額,0)-NZ(B金額,0) AS 差額 FROM クエリ

taiyou55
質問者

補足

詳しい記述をありがとうございます。 早速、(1)のクエリを作り実行したところ 「集計関数の一部として指定された式'品番'を含んでいないクエリを 実行しようとしました。」とエラーメッセージが出てしまいました。 フィールド名も特に間違いはありませんでしたし、変な位置に改行を入れてしまっていないかなど確認したのですが、特に見当たりません。 何が考えられますでしょうか? いろいろと質問してしまい申し訳ありません。 ちなみに、区分も品番もテキスト型なのですが、何か関係ありますでしょうか?

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

単に Nz(A金額,0)-Nz(B金額,0) で良いのでは?

taiyou55
質問者

補足

早速のご回答ありがとうございます。 ピボットのどこに上記の式を入れればよいのでしょうか? その辺りがよくわかっていません。 申し訳ありませんがよろしくお願いいたします。

関連するQ&A

  • エクセルのピボットテーブルで

    ピボットテーブルの表示方法についてです。 表の品名と数量からピボットテーブルを作成します。 行に品名、データ部に数量を表示させるのですが、数量が0(ゼロ)の場合には、その行自体を表示させない様にしたいのです。 元の表の方は変更等出来ないので、ピボットテーブルの方で何とか出来ないかと思います。 【元の表】 品番  数量 A001  5,000 A002    0 B001  4,500 B002    0 上記の2列からピボットテーブルを作成すます。 【ピボットテーブル】 品番  数量 A001  5,000 B001  4,500 総計  9,500 上記の様に、元の表で数量が0なら、その品番と数量の行が表示されない様にです。

  • Access2002のピボットテーブルにて

    Access2002にて販売管理のシステムを構築しています。 売上高と売上件数を求めるクエリを作成し それぞれピボットテーブルにて下記の様に表示させております。 [売上高クエリ:(表示)ピボットテーブル]    A店  B店  C店 1月 1500  1800  0 2月 2300  1500  2700 3月 1200  600   1300 [売上件数クエリ:(表示)ピボットテーブル]    A店  B店  C店 1月  10   8   0 2月  18   6   22 3月  10   4   10 例えば、A店の1月度の売上平均単価を求める場合は 1500÷10=150円と出てきますが これをピボットテーブルにて自動的に処理させることは可能でしょうか? できれば、同じピボットテーブルの形式で 全ての月・店舗の平均単価が一発表示させられると嬉しいのですが。 ご存じのかた教えて下さい。

  • Access 2つのテーブルで数量の比較をしたい

    Access2007を使用しています。 2つのテーブルに品番と数量がそれぞれ登録されています。 【テーブルA】 品番  / 数量 あ001/ 4 い001/ 5 あ001/ 1 【テーブルB】 品番  / 数量 う000/ 10 あ001/ 1 い001/ 4 い001/ 1 この2つのテーブルから、品番ごとの数量を比較して、異なるデータの品番と差異を取り出したいのです。 【結果】 あ001/ 4(←A-B=4) う000/ 10 A,Bのテーブルで品番ごとに集計した結果から、数量が不一致のものを取り出す方法がわかりません。 どうぞよろしくお願いいたします。

  • ACCESS2000 ユニオンクエリーで、同一データについて

    こんにちは。 ACCESS2000で、超初心者から初心者に脱皮中です。 倉庫管理の仕事をしています。 各地の倉庫から在庫データを提出してもらい、データ管理を行っています。 データの内容は 倉庫番号, 品番, 品名, 区分, 数量 です。 一括管理のために、各倉庫のデータをユニオンクエリーでつなぎます。 SELECT 倉庫番号, 品番, 品名, 区分, 数量 FROM 倉庫1 UNION SELECT 倉庫番号, 品番, 品名, 区分, 数量 FROM 倉庫2 … UNION SELECT 倉庫番号, 品番, 品名, 区分, 数量 FROM 倉庫7; この中に、たまたますべてのデータが同一のデータが存在しました。 倉庫7,A00,食器洗剤,破損品,1 倉庫7,A00,食器洗剤,破損品,1 要するに、同じ倉庫に同じものが、同じ状態で同じ数量あったということです。 ユニオンクエリーの結果は、この片方しか表示してくれないのです。 同一データであっても並べて表示し、あとでクロス集計等をしたときに、数量2 と表示したいのですが、知恵をお貸しください。 ちなみにすべてのテーブルに、主キー等は設定していません。

  • ピボットテーブル

    ピボットテーブルとは要は抽出機能のことだと思います。 つまりアクセスのクエリと全く同等だと思っているのですが、 何か私の思い込み違いがあるような気がします。 果たしてピボット=クエリという考え方は正しいのでしょうか。  

  • ピボットテーブルでの複数項目の集計方法について

    お世話になります。 下記のようなデータがあります 氏名  金額  区分 あ   100   A い   110   B う   140   A え   100   C お   130   C 区分ごとの金額の合計(Aの合計金額、Bの合計金額・・・)と区分ごとの件数の数(Aの合計件数、Bの合計件数・・・)を出したく、 私は下記のような方法でピボットテーブルを作成したのですが ページエリア 区分 行エリア   氏名 データエリア   金額 データエリア   金額  (フィールドの設定でデータの個数に変更)  いちいちデータエリアに「データの個数 / 金額2  1」「データの個数 / 金額2  1」・・・とでてくるのが邪魔です。 これを消す方法はないでしょうか? 個数に関しては、全体の個数のみ下に表示されればいいのですが または、違った方法で作ったほうがいいのでしょうか? 集計機能ならば作れるのですが、データの更新ができない、ページごとにシートを分けられない・・・など不便なのでピボットテーブルでうまく出来ないかと・・・。 よろしくおねがいします。

  • アクセス2000でのピボットテーブルに関して

    お尋ねしたいことがございます。 アクセス2000で集計をするためにフォームでエクセルのピボットテーブルを使おうと思いますが下記のようなことはどうやったらよいのでしょうか? --------------------------------------------------    - バック - その他 - 宝石 - 時計 -合計 -------------------------------------------------- A店 - 1.000 - 2.000  - 3.000 - 4.000-  -------------------------------------------------- B店 - 2.000 - 3.000  - 4.000 - 5.000 - -------------------------------------------------- 現在このようになっているのですが これでバック+その他+宝石+時計=合計はでるのですが バック+時計=合計A その他+宝石=合計Bもわかるようにしたいのですがどうしたらよろしいでしょうか。 また、並びのことですが現在は バック-その他-宝石-時計-合計となっておりますが バック-時計-宝石-その他-合計にしたいのですがそのようなことはできるのでしょうか。宜しくお願いします 理想の表 ------------------------------------------------- ・・宝石-その他 - 合計 - 合計A - 合計B ------------------------------------------------- ・・¥ - ¥  - ¥  - ¥   -  ¥ ------------------------------------------------- ・・¥ - ¥  - ¥  - ¥   -  ¥ -------------------------------------------------

  • ピボットテーブルで集計

    2007/5/24 合計 / 粗利益率 47.3% 44.9% 48.2% 合計 / 数量 200 152 163 合計 / 売上金額 49589 47101 45639 2007/5/25 合計 / 粗利益率 47.3% 42.7% 48.2% 合計 / 数量 236 312 148 合計 / 売上金額 58519 92914 41475 2007/5/26 合計 / 粗利益率 47.4% 44.8% 48.3% 合計 / 数量 244 158 176 合計 / 売上金額 60577 48949 49399 全体の 合計 / 粗利益率 47.5% 44.3% 48.1% 全体の 合計 / 数量 6666 2686 2593 全体の 合計 / 売上金額 1658908 825455 724473 というピボットテーブルがあるのですが売上金額に粗利率をかけて 粗利益を出したいのですがどうすればよろしいでしょうか?? エクセル初心者ですよろしくお願いします

  • エクセルのピボットテーブルについて

    お世話になります。 エクセル2010のピボットテーブルの使い方について 教えてください。 ピボットテーブルである項目Aの合計と別の項目Bの合計を 求めてその合計の割り算(Aの合計/Bの合計)を表示させたいのですが Aの合計・Bの合計は求められますがその商の表示のさせ方がわかりません 初歩的な質問かもしれませんが 教えていただけないでしょうか よろしくお願いします。

  • アクセス

    アクセスでテーブル上で、   単価 数量 金額    3 5 15 のように単価、数量いれると金額が合計されるテーブルができますか? クエリはつかわないで・・