• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access2つのテーブルの差額を出すピボット)

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

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

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1416)
回答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/1416)
回答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/1416)
回答No.1

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

taiyou55
質問者

補足

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

関連するQ&A