SQL Server 2008 Analysis Servicesでの部署ごとの売上表示方法について

このQ&Aのポイント
  • SQL Server 2008 Analysis Services(SSAS)を使用して、部署ごとの売上を表示する方法について教えてください。
  • 現在、顧客単位の売上しか保持していないが、部署ごとの売上を表示したいと考えています。
  • データ粒度が異なる場合でも、同じ売上額を表示する方法は存在するのでしょうか。
回答を見る
  • ベストアンサー

SQL Server 2008 Analysis Services (

SQL Server 2008 Analysis Services (SSAS) の集計について、教えてください。 現在、以下のメジャーテーブルとディメンションを保持しています。 (1)メジャーテーブル(売上)  顧客:A企業 売上:100億 (2)ディメンション(担当部署)  顧客:A企業 担当部署:α部  顧客:A企業 担当部署:β部 【課題】  (1)が部署ごとの売上を保持していればよいのですが、顧客単位の売上しか  ありません。 【実現したいこと】  以下のイメージで、部署に紐付けて売上を表示させたいと考えています。 (A) 部署ごとの売上(顧客単位の売上を部署の売上として表示)  顧客:A企業 担当部署:α部 売上:100億  顧客:A企業 担当部署:β部 売上:100億 (B) 顧客ごとの売上(本来の顧客単位の売上)  顧客:A企業 売上:100億 データ粒度が異なっても、同じ売上額を表示させる方法はあるのでしょうか。 判り辛い説明かもしれませんが、よろしくお願いします。

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

担当部署を中間ファクトテーブルとしてもメジャーに登録し、それを経由して多対多のリレーションを張れば実現可能です。 試した限りではできますよ。 http://technet.microsoft.com/ja-jp/library/ms170463(SQL.90).aspx まあ、無理を承知でやる以上、どう見えるかは十分確認してから設定してみてください。

takumin2004
質問者

お礼

お返事が遅くなりまして申し訳ありません。 教えていただいた方法で、無事解決できました。本当に助かりました。

関連するQ&A

  • ACCESSのサーバーでの共有について

    顧客情報がはいってる一つのAccessをサーバーにおいてます。 テーブルは ・顧客名テーブル ・住所テーブル ・担当者テーブル ・印刷用テーブル があります。 フォームに担当者コードを入力して「印刷」ボタンを押すと、担当している顧客の一覧が印刷できるようにしたいんです。 印刷用テーブルに担当者のデータを入れて、印刷用テーブルを基に印刷をしたいんですけど、 共有すると問題が… Aという担当者が顧客情報を印刷するためにアクセスを使用している最中に、 Bという担当者が顧客情報を印刷するためにアクセスを使用すると、Aの担当者の顧客情報が 消されてしまいます。「Delete」と表示されます。 印刷する際のVBAで一度印刷用テーブルのデータを消して印刷するデータを、印刷用テーブルにaddnewでいれてるから、消えてしまう原因は分かってるんですが、一度表示させたデータはそのまま残すことは可能でしょうか? 「再表示させない」みたいなコードはあるんでしょうか? また、こういうケースでAccessを使用する場合はどのようなやり方がいいのでしょうか? (プログラムの作り方など)

  • SQL文おしえてください

    例えば、以下のような 2 つのテーブルがあるとします。 営業所テーブル (会社名) (担当者名)           会社A 担当者A          会社A 担当者B          会社B 担当者C          会社C 担当者D 商品売上テーブル (担当者) (売上)           担当者A  10万           担当者C   5万           担当者D  10万 これを以下のように会社名Aの会社だけを条件に「担当者B」の売上レコードがない場合でも、ゼロ件としてレコードを取得したいんですがどのようにすればよいのでしょうか。   (会社名)(担当者) (売上)    会社A  担当者A  10万    会社A  担当者B   0万 よろしくお願いします。

  • SQLで違うテーブルの結果を組み合わせたい

    SQLでどう結果を返したらいいのかわからないので力を貸してください。 下記の受注表と入荷表があります。 受注表 担当 商品コード 顧客コード ── ──── ───── 田中 A1 001 田中 A1 002 田中 A1 003 山田 A2 020 山田 A1 003 田中 A1 020 入荷表 担当 入荷コード 入荷日 ── ───── ───── 山田 X013 20080701 山田 X013 20080701 田中 X013 20080701 山田 X013 20080630 山田 X013 20080630 田中 X123 20080630 自分の欲しい結果を出すためのSQLは下記のクエリです。 ≪受注表テーブルから≫ SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '003' ; SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '020' ; ≪入荷表テーブルから≫ SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X013' AND 入荷日 = '20080701' ; SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X123' AND 入荷日 = '20080630' ; これらで出る結果をただ下記のように横並びに出したいのですがどうしたらよいでしょうか? 「担当」の項目に関しては複数でますが気にしないで下さい。 ただ全く関係のないテーブル同士の結果を「横並び」表示にしたいだけです。 担当 顧客コード 担当 顧客コード 担当 入荷日 担当 入荷日 ── ───── ── ───── ── ──── ── ───── 田中 003 田中 020 田中 20080701 田中 20080630

  • FileMakerPro10:検索条件について

    お詳しい方、ご教授願います。 テーブル「売り上げ台帳」にフィールド「日付」「顧客名」「担当者」がリスト表示されています。 エクセルのフィルタのようなイメージで絞り込みたいとき、検索条件を保持したまま、うまく検索条件を追加していく方法はないでしょうか? しかも可能ならば、よく使う検索が限られているため、 あらかじめセットしてあるボタンのon/offで、「日付」なら(本日ボタン)(過去1週間ボタン)で、「担当者」なら(担当Aボタン)(担当Bボタン)などで、絞り込んだり解除したりはできないものでしょうか? お詳しい方、ぜひともよろしくお願いします。

  • ピボットテーブル)指定した範囲の数字だけ集計

    お店の売上表をつかって、顧客ごとの各年年同期を比較することを考えており、ピボットテーブルをつくっています。 売上表は、売上日・顧客名・売上額・仕入額・粗利額・担当者という項目が あります。 ↓な感じです。 5/13 A様   800円  500円  200円 担当(1) 5/14 A様 10000円 8000円 2000円 担当(1) 5/15 B様  1200円  800円  400円 担当(2) 5/15 B様  2000円 1200円  800円 担当(2) 5/20 C様  1000円  700円  300円 担当(3) ↑のように、各顧客の中には特別に高い買い物をしてくれる時も あるのですが、滅多にないので、その高いモノを購入された場合を 除いて集計したいと思っています。 ↑の場合だと、10000円未満の売上を顧客ごとで集計したい。 ピボットテーブルを使ってどのようにすればよいですか? 調べ方が悪いのか、なかなか見つかりませんので、ここで 教えてもらえたらと思っています。

  • SQLの作成について

    以下のSQLが作りたいのですが 作れなくて困っています。 有識者の方、お助けください。 環境:SqlServer2008 ★詳細説明 テーブルA、B、Cがあるとします。 A-B 1対1 B-C は1対N A,B,Cは全て検索・表示対象になります。 A-Bに対する検索表示は問題ないのですが Cの発送区分(1:未発送 2:発送済み)を検索条件と するSQL作成に悩んでおります。 ★テーブル・構成データ A 年度 顧客CD 顧客名称 2010 1000 A社 2010 1001 B社 2010 1002 C社 2010 1003 D社 B 年度 顧客CD サービス開始日 2010 1000  2011/04/1 2010 1001  2011/04/2 2010 1002  2011/04/3 2010 1003  2011/04/4 C 年度 顧客CD 部署 発送区分 発送日 2010 1000 A 1 2010 1001 A 1 2010 1001 B 2 2010/10/11 2010 1001 C 2 2010/10/12 2010 1003 D 1 2010 1003 D 2 2010/10/20 ★実現したいSQL 1.発送区分に検索条件を設定しない場合   年度 顧客CD 発送区分 発送日   2010 1000 1   2010 1001 2 2010/10/12   2010 1002 1   2010 1003 2     2010/10/20 2.発送区分を未発送   年度 顧客CD 発送区分 発送日   2010 1000 1   2010 1002 1 3.発送区分を発送済み   年度 顧客CD 発送区分 発送日   2010 1001 2 2010/10/12   2010 1003 2 2010/10/20 1~3を1回のSQLで実行したいのですが 実現できておりません。 よろしくお願いします。

  • SQLで関係のないテーブルの内容を合体させたい

    SQLでの副問い合わせ(サブクエリ)について教えて下さい。自分の出したい結果が思うように得られず悩んでおります。 結果を得たものをCSVに落としたいわけですが”見え方”ヴィジュアル面に問題があります。 欲しい結果をそれぞれSQLにしますと ≪受注表テーブルから≫ SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '003' ; SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '020' ; ≪入荷表テーブルから≫ SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X013' AND 入荷日 = '20080701' ; SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X123' AND 入荷日 = '20080630' ; ≪欲しい結果の見え方≫ 担当 顧客コード 担当 顧客コード 担当 入荷日 担当 入荷日 ── ───── ── ───── ── ─── ── ───── 田中 003 田中 020 田中 20080701 田中 20080630 田中 003 田中 020 田中 20080701 田中 20080630 このように関係のないレコードを横並びにするにはどうしたらよいでしょうか? 使っているDBはOracle10、SQL server、MySQL、HiRDBそれぞれで実行したいのですが・・・ どなたかご教示ください。

  • SQLの集計について教えてください。

    環境はoracle9iです。 ■テーブルの構成 |年度|月|部署コード|商品コード|金額| ■テーブルの内容 |2010|01|AAA|001|1000| |2010|02|AAA|001|2000| |2010|01|AAA|001|3000| |2010|01|AAA|002|3000| |2010|02|BBB|003|4000| |2010|01|CCC|001|5000| |2010|03|CCC|001|6000| 上記のようなテーブルがあり、 これを年度,月,部署コード,商品コードでサマリした値を表示したいです。 と、ここまでなら上の4つでGROUP BYしてあげれば良いのですが、 そこに年度,部署コード,商品コードでサマリした 「累計金額」列を加える必要があります。(イメージは下記のとおりです。) ■抽出結果の構成 |年度|月|部署コード|商品コード|金額|累計金額| ■抽出結果の内容 |2010|01|AAA|001|4000|6000| |2010|02|AAA|001|2000|6000| |2010|02|BBB|003|4000|4000| |2010|01|CCC|001|5000|11000| |2010|03|CCC|001|6000|11000| GROUP BYと別の集計単位で列を作ることが可能か、 可能であればどのようなSQLを書くべきか、 というところを教えてください。

  • 一般的なSQLでの処理

    SQL初心者なのでお教えください。 テーブルAに部課名,社員NO,入室時刻,退室時刻のデータがあり部課名単位でセレクトした結果を 社員NO単位で処理したいのですが、一般的にはどのような手順(SQL)でするのでしょうか。 テーブルA |部課名|社員NO|    入室時刻 |  退室時刻 | |A |11111 |2006/01/01 8:10:00| 2006/01/01 9:10:00| |A |11114 |2006/01/01 8:15:00| 2006/01/01 9:15:00| |A |11112 |2006/01/01 8:30:00| 2006/01/01 9:30:00| |A |11112 |2006/01/01 8:50:00| 2006/01/01 9:50:00| |A |11111 |2006/01/01 10:10:00| 2006/01/01 12:10:00| |A |11113 |2006/01/01 6:10:00| 2006/01/01 7:10:00| |A |11111 |2006/01/01 13:10:00| 2006/01/01 14:10:00| 社員NO 11111さんのみの結果を作りたい(特定期間に何回入室したか等) 使用OS Windows 2000,VisualBasic 2005

  • AccessのフォームのテキストボックスにLOOKUPで表示したい

    かなり初心者です。 Accessに"顧客テーブル"と"担当者テーブル"を作成しました。この顧客テーブルに顧客情報をフォームで入力していきたいのですが、顧客テーブルの担当者コードフィールドに担当者コードを入力した際、担当者テーブルの担当者名がExcelのLOOKUPと同じように表示できると思ってやりましたがうまくいきません。 テキストボックスのコントロールソースに =VLOOKUP([担当者コード],[担当者テーブル]![社員コード],[担当者テーブル]![社員名])・・・と入れたら、#Name?エラーが出ます。 Lookupは使えませんか?他に方法ありますか? よろしくお願いします。