• ベストアンサー

Access 分類分け クエリの作成方法について

商品分類項目に野球 テニス サッカー等の項目が15以上あります。 その各項目にウエア シューズ グッズ 構成比率とあります。 テーブルを作成するときに構成比率 ウエア シューズ グッズ 分類IDとフィールドを作成し、項目事に分類IDを振り分けました。 野球販売高を算出するには売上高*野球構成比/100*0.5と計算します。 クエリでこれらを計算するには抽出条件で15項目のファイルを作成する必要がありますよね さらに計算する1項目につき1ファイル必要ですよね 算出するのは野球販売高だけではなく、テニス販売高、サッカー販売高 と項目事に必要です。 計算項目はこれ以外にも14あり、それらを上記の方法で算出するとファイル数が膨大になります。 Accessではクエリの数が数十個になるのは普通なのでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

●質問にはテーブル等の具体例を挙げて質問すること この質問は説明は長いが、詳細は判りにくい ●テーブル設計について適否の判断を仰ぐこと  構成比率をテーブルに持つのは適当か。算出項目ではないのか。 ●クロス集計クエリで解決できるか(#1のご回答) ●アクセスのピボットテーブルでできないか。( クロス集計クエリと似ているが。 http://www.relief.jp/itnote/archives/000670.php バージョン2002から、Accessでもピボットテーブルやピボットグラフが作れるようになりました。 詳細 http://homepage2.nifty.com/MrUr/katuyo/pvtsamp.htm http://hamachan4.exblog.jp/4469219/ ほか多数 ーー 勝手にデータを作ってみた(実例を挙げてないので回答者に手数をかけることになるのだよ) ID スポーツ フィールド2 フィールド3(=売上) 1 野球 ウエア 20 2 テニス ウエア 15 3 野球 シューズ 10 4 テニス ウエア 20 5 サッカー ウエア 30 6 テニス ウエア 5 7 テニス シューズ 15 8 野球 ウエア 40 9 サッカー グッズ 25 10 テニス グッズ 20 11 サッカー ウエア 10 12 野球 グッズ 50 13 テニス シューズ 15 選択クエリ化する ID スポーツ フィールド2 フィールド3 1 野球 ウエア 20 2 テニス ウエア 15 3 野球 シューズ 10 4 テニス ウエア 20 5 サッカー ウエア 30 6 テニス ウエア 5 7 テニス シューズ 15 8 野球 ウエア 40 9 サッカー グッズ 25 10 テニス グッズ 20 11 サッカー ウエア 10 12 野球 グッズ 50 13 テニス シューズ 15 タイトルバーの右部で、右クリック ピボットテーブルビュー 列・行にフィールドをD&D 真中のエリアにフィールド3をD&D 合計に加工して(やり方は http://hamachan4.exblog.jp/4469219/の >集計フィールドを作成する場合は、の部分を参照)     ウエア グッズ シューズ 総計 サッカー 40 25 65 テニス 40 20 30 90 野球 60 50 10 120 総計 140 95    40 275 ーー こんなものと質問事項は大幅に違うのだろうか。質問の意味が良く取れなかった。

sskj
質問者

補足

質問内容の意味が分からなかったようですみませんでした。 私自身も今一理解してない部分がありまして困っています。 質問内容に関しては♯1の補足内容に書かせていただきました。 ピボットテーブルを使用すれば作成できそうですね。 回答ありがとうございました。

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

クロス集計クエリを作れば良いのでは? クロス集計クエリで商品分類毎の構成比の一覧を作成 行見出しに商品分類 列見出しに構成する内容 データを構成比率の合計で 商品分類_合計_ウエア_シューズ_グッズ 野球   100  30    20   50  テニス  100  50    20   30 サッカー 100  30    50   40 ・ ・ と展開させて 商品分類 売上高 野球   100000 テニス  120000 サッカー  80000 ・ ・ のテーブルを使って、新たなクエリで [売上高]*[ウェア],[売上高]*[シューズ],[売上高]*[グッズ]を計算

sskj
質問者

補足

多分質問内容を誤解されているのだと思いますが・・・ 私も勘違いしていたことがあります。(15項目のファイルは必要ないかもしれません) 最終的なレポートとしては 野球 テニス サッカー 販売高 販売高 販売高 ・ ・ ・ 販売高合計 販売高合計 販売高合計 としたいのですが現状のクエリでは 分類名 販売高 野球 ・ ・ テニス ・ ・ サッカー ・ ・ 別ファイル 分類 販売高合計 野球 テニス サッカー となっております。 (この算出内容にウエア シューズ グッズは関係ありません) 求めるレポート形式をつくりにはクエリを項目事に分割しないと いけないと思うのですが・・・どうでしょうか? 以下がすべての項目の販売高を算出するクエリです。 ・売上高が空白の場合は集計条件からはずしています。 ・データレベルという項目が12の場合のみ抽出しています。 SELECT ■商品分類.分類名, ■調査データ2(商品分類).売上構成, ■調査データ2(商品分類).ウエア, ■調査データ2(商品分類).シューズ, ■調査データ2(商品分類).グッズ, ■調査データ(売上げ).前年度売上高, [前年度売上高]*[売上構成]/100+0.5 AS 販売高, ■店マスタ.データレベル FROM ■店マスタ INNER JOIN (■商品分類 INNER JOIN (■調査データ2(商品分類) INNER JOIN ■調査データ(売上げ) ON ■調査データ2(商品分類).店コード = ■調査データ(売上げ).店コード) ON ■商品分類.分類ID = ■調査データ2(商品分類).分類ID) ON (■店マスタ.店コード = ■調査データ2(商品分類).店コード) AND (■店マスタ.店コード = ■調査データ(売上げ).店コード) WHERE ((Not (■調査データ(売上げ).前年度売上高) Is Null) AND ((■店マスタ.データレベル)="12")); 販売高合計算出クエリ SELECT ●販売高(すべて).分類名, Sum(●販売高(すべて).販売高) AS 販売高の合計 FROM ●販売高(すべて) GROUP BY ●販売高(すべて).分類名;