- ベストアンサー
Access クエリ、レポートによる集計について
クエリで目的の集計結果を出すために制作中なのですが 私の作り方が悪いようでレポートを作成する段階でAccessが フリーズしてしまいます。 集計内容テーブル構成は以下のとおりです。 (マーケティング処理用のデータベース) 一つの企業がいくつもの店を持っています。 企業用のデータと店用のフィールド項目は同じですが一対多を保つためにテーブルを分けています。(企業側が一、店側が多。) このように一つの企業に対して店がいくつもある場合、多店舗と呼んでいます。 この多店舗を持つ企業データだけで1500社程度あります。 多店舗のデータは1万件ほどです。 一つの企業に対して一つの店しかない単独店のデータもあります。 企業用と店用を分ける必要が無いので単独店のデータは一つだけです。 今の段階では企業テーブルに多店舗の企業データ。 店テーブルに多店舗のデータと単独店のデータとなっております。 別テーブルに商品分類テーブルがあり、フィールドとしては構成比、分類IDとなっています。 この商品分類を横並びにするためにクロス集計クエリを使い横並びにしました。分類は15品目程度あります。 ついでに構成比と別テーブルにある売上を元にパーセントを金額に直しています。抽出条件に売上100000以上としています。 クエリ名:●販売高(すべて) http://upload.jpn.ph/img/u14091.txt 県ごと企業ごとの集計をしたいので、 フィールドは 都道府県、掲載拒否(0)、データレベル(10)、企業コードをグループ化。以下商品分類は合計と設定しています。 クエリ名:◆多店舗販売高(仮名) (データレベル、00が単独店 10が多店舗) (掲載拒否、1の場合は拒否) ttp://upload.jpn.ph/img/u14092.txt 単独店は一店舗だけなので多店舗のような企業ごとの集計はする必要がありません。販売高クエリを使いデータレベル00、掲載拒否0、商品分類や企業コードを入れただけです。 これで完成ではなく、掲載拒否の合計データを入れる必要があります。 フィールドとしては、都道府県、店名、掲載拒否(1)、企業コードでグループ化、以下商品分類は合計。 これら3つの集計内容をユニオンクエリで一つにしています。 (多店舗販売高+企業名、単独店販売高、その他販売高)(県別集計) 多店舗販売高に関しては後から企業名を別クエリで足しています。 フィールド数、フィールド名を合わせる為に、その他販売高クエリの、店名及び企業コードはNULLで設定しています。 このユニオンクエリをレポートで設定し、グループレベルでトップを県、 二番目に掲載フィールドを設定。 集計は分類のすべてを合計で設定。 県でグループ化して、その他とそれ以外の合計を出したいので掲載フィールドをユニオンクエリを作成する前段階で追加しました。 (掲載1はその他、それ以外は0) 集計したい内容をエクセルで簡単に表すとこういう感じです。 ttp://upload.jpn.ph/img/u14090.jpg 社数やシェアなどの計算はクエリでさらに作成しなければならないのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>Accessがフリーズしてしまいます。 ならば、シンプルなやり方に転ずるのみかと思います。 クエリをどんどん複雑化していけば、その動作は不安定になっていくと推察します。 このクエリの限界を突破するにはVBAにて集計するのが一番かと思います。 必要であれば、集計用の一時テーブルを作成することも考えられたらどうでしょうか? そうすれば、サーバの負担も大幅に軽減されます。
その他の回答 (1)
- CHRONOS_0
- ベストアンサー率54% (457/838)
説明が長いので全部きちんと読んだわけじゃありませんが ざっと読んで気がついた問題点を挙げておきます >一つの企業に対して一つの店しかない単独店のデータもあります。 >企業用と店用を分ける必要が無いので単独店のデータは一つだけです。 支配する店の数に関係なくテーブルの構造は同じにしなければだめです 単独店の場合には企業にも店にも同じものを登録しておきます 動物分類における「ひと属ひと科ひと」のような形ですね >企業用のデータと店用のフィールド項目は同じですが一対多を保つためにテーブルを分けています。 これもだめです たぶん上で指摘したことが影響しているのでしょうが 店データを集計したものが企業データになるはずで フィールド項目が同じなんてことは考えられません テーブルの説明がほとんどなくクエリのことばかり書かれているので 詳しくは分かりませんが 上に指摘したことを見直すとテーブル構造がすっきりすると思いますよ
補足
回答ありがとうございます。 一時テーブルを作成する方向も含めて考えて見ます。 変更時に手動で上書きしなければならないのが欠点ですが・・・。 VBAに関してはまったくやっていないので、今からとなると時間的に厳しいです。 ある程度Accessで集計してEXCELにエクスポートして集計する方向も考えています。