- 締切済み
アクセス2000でのピボットテーブルに関して
お尋ねしたいことがございます。 アクセス2000で集計をするためにフォームでエクセルのピボットテーブルを使おうと思いますが下記のようなことはどうやったらよいのでしょうか? -------------------------------------------------- - バック - その他 - 宝石 - 時計 -合計 -------------------------------------------------- A店 - 1.000 - 2.000 - 3.000 - 4.000- -------------------------------------------------- B店 - 2.000 - 3.000 - 4.000 - 5.000 - -------------------------------------------------- 現在このようになっているのですが これでバック+その他+宝石+時計=合計はでるのですが バック+時計=合計A その他+宝石=合計Bもわかるようにしたいのですがどうしたらよろしいでしょうか。 また、並びのことですが現在は バック-その他-宝石-時計-合計となっておりますが バック-時計-宝石-その他-合計にしたいのですがそのようなことはできるのでしょうか。宜しくお願いします 理想の表 ------------------------------------------------- ・・宝石-その他 - 合計 - 合計A - 合計B ------------------------------------------------- ・・¥ - ¥ - ¥ - ¥ - ¥ ------------------------------------------------- ・・¥ - ¥ - ¥ - ¥ - ¥ -------------------------------------------------
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- how-do-you-do
- ベストアンサー率56% (59/104)
御疲れ様です >どこの画面でSQL文を記述すえばよろしいのでしょうか。 そうですね、普段使うクエリの画面から移行できます。 クエリのデザインビューを表示し、メニューバーの「表示」⇒「SQLビュー」にて表示されます。 例えば、今回下記のようなクエリを作成されたようですが、 >クエリA >店名-商品番号-販売金額-商品名-詳細-手数料金額-販売日 このクエリをSQLビューで見ると下記のようになります。 SELECT テーブルB.店名, テーブルA.商品番号, テーブルA.販売金額, テーブルC.商品名, テーブルA.詳細, テーブルC.手数料, テーブルA.販売日 FROM (テーブルA LEFT JOIN テーブルB ON テーブルA.販売店番号 = テーブルB.店番) LEFT JOIN テーブルC ON テーブルA.商品番号 = テーブルC.商品番号; このようにクエリとSQLは同等ということが分かりますね。 特殊なケースで無い限り、SQLビューはほとんど使用することなくてすみます。 (VBAを使用するときは頻繁に御世話になりますが...) さて、本題の方ですがテーブルの構造が記されていますね、テーブル名が本当かどうか分かりませんが、掲題の内容を元にSQL文を記します。 SELECT テーブルB.店名, テーブルC.商品名, Sum(IIf([商品名]="宝石",[販売金額],0)) AS 宝石合計, Sum(IIf([商品名]="その他",[販売金額],0)) AS その他合計, Sum(テーブルA.販売金額) AS 合計, Sum(IIf([商品名]="バック",[販売金額],IIf([商品名]="時計",[販売金],0))) AS 合計A, Sum(IIf([商品名]="その他",[販売金額],IIf([商品名]="宝石",[販売金額],0))) AS 合計B FROM (テーブルC RIGHT JOIN テーブルA ON テーブルC.商品番号 = テーブルA.商品番号) LEFT JOIN テーブルB ON テーブルA.販売店番号 = テーブルB.店番 GROUP BY テーブルB.店名, テーブルC.商品名; このSQL文をSQLビューにコピーして下さい。その後、デザインビューに変更してみて下さい。 クエリで作成した場合の様子が分かると思います。 >どこかわかりやすいHPはないでしょうか 目的のものと合致するか分からないですが、参考に... http://homepage1.nifty.com/tsware/index.htm
- how-do-you-do
- ベストアンサー率56% (59/104)
こんにちは テーブルの構造が書いてありません 2パターンを考慮して、回答いたします 「商品」テーブルに 店名 - 商品 - 金額 A店 - 宝石 - 1000 B店 - 時計 - 2000 A店 - 宝石 - 3000 B店 - バック - 4000 ・・・ と格納されているとします で、これらを集計する為に使用するものは、選択クエリ(集計)を使用します 下記にクエリのSQL文を記述します SELECT 商品.店名, Sum(IIf([商品名]="宝石",[金額],0)) AS 宝石合計, Sum(IIf([商品名]="その他",[金額],0)) AS その他合計, Sum(商品.金額) AS 合計, Sum(IIf([商品名]="バック",[金額],IIf([商品名]="時計",[金額],0))) AS 合計A, Sum(IIf([商品名]="その他",[金額],IIf([商品名]="宝石",[金額],0))) AS 合計B FROM 商品 GROUP BY 商品.店名 ORDER BY 商品.店名; もう一つのパターンが、 店名 - バック - その他 - 宝石 - 時計 - 合計 A店 - 1.000 - 2.000 - 3.000 - 4.000 - B店 - 2.000 - 3.000 - 4.000 - 5.000 - ・・・ と格納されている場合です こちらの場合は簡単です。選択クエリを使用します 下記にクエリのSQL文を記述します SELECT 商品TBL.店名, 商品TBL.宝石, 商品TBL.その他, 商品TBL.合計, [バック]+[時計] AS 合計A, [その他]+[宝石] AS 合計B FROM 商品TBL ORDER BY 商品TBL.店名; これで懸念されている「並び」のことも解決できます アクセスのピボットテーブルは使用せずに集計結果が算出できます たぶん、SQL文とは何?と思われているかもしれませんが、クエリを勉強していれば必ず通るところです 頑張りましょう
- sgh
- ベストアンサー率61% (75/121)
元データは A店 バック 100 B店 宝石 50 A店 宝石 200 ... となっていると想像して回答します。 私ならこのようなケースの場合、一時的なテーブルを使います。 ご質問にある、結果に相当するテーブルをあらかじめ作成しておき、アクション クエリや、VBAを使って処理すれば良いと思います。 気をつけなければいけないのは、Null値は足し算できませんので、Nullは"0"に 置き換える等の処理が必要です。 EXCELのピボットを使いたいとのことですが、私にはこの結果を導くのは難しい と思います。 EXCELを使うのであれば、上記のようにあらかじめ必要となる項目のシートを用意 し、ソートた上で、IFSUM関数を駆使するか、VBAの様な気がします。
補足
*テーブルB *テーブルA 店番←------販売店番号 店名 商品番号 販売金額 *テーブルC 商品番号----→商品番号 詳細 商品名 販売日 手数料 リレションシップをしております。 クエリA 店名-商品番号-販売金額-商品名-詳細-手数料金額-販売日 といったクエリをつくりました。 どこの画面でSQL文を記述すえばよろしいのでしょうか。 どこかわかりやすいHPはないでしょうか お願いします。