- ベストアンサー
アクセスクエリについて質問です。
アクセスクエリについて質問です。 A列:得意先コード B列:売上額 でA列2行:A社大阪 B列2行:\10,000 A列3行:B社東京 B列3行:\20,000 A列4行:A社京都 B列4行:40,000 のテーブルがある時、クエリで A社 50,000 B社10,000 というデータを抜きたいのですがどうしたらいいのかがわかりません。A社の営業所単位での売上額を合計し、なおかつ 営業所名のないA社とする。簡単なようで難しく、困っています。どなたかわかる方いらっしゃいましたら、御教授お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
なるべく簡単な方法がご希望のようなので、多少効率悪いがご了承を。 「実はC社もある」という後だしは無しね。あるなら、2)以降繰り返しのうえで3)で対応。 1)A社合計を求めるクエリを作成する。 2)B社合計を求めるクエリを作成する。 3)1)と2)を結合するユニオンクエリを作成する。 で、3)を参照する。 得意先コードは、何かしらのグループ化できる要素があるのかな? 0101がA社大阪、0102がA社京都、0201がB社東京、0202がB社京都みたいな。 あるなら、whereで得意先コードをLIKE指定。 ないなら、whereで得意先コードを列挙。 以下、デザインビューでSQLビューに貼付。適宜変更のこと。 1)qryA社選択(whereが異なるので、どちらかだけね) select 'A社' AS 得意先, sum([売上額]) AS 売上合計 FROM データテーブル WHERE [得意先コード] LIKE '01*'; select 'A社' AS 得意先, sum([売上額]) AS 売上合計 FROM データテーブル WHERE [得意先コード] IN ('0101', '0102'); 2)qryB社選択(whereが異なるので、どちらかだけね) select 'B社' AS 得意先, sum([売上額]) AS 売上合計 FROM データテーブル WHERE [得意先コード] LIKE '02*'; select 'B社' AS 得意先, sum([売上額]) AS 売上合計 FROM データテーブル WHERE [得意先コード] IN ('0201', '0202'); 3)qry会社別売上合計(whereはないのでどちらの場合も共通) select * FROM qryA社選択 UNION select * FROM qryB社選択 ;
その他の回答 (1)
- piroin654
- ベストアンサー率75% (692/917)
質問ではA社、B社となっていますが、 実際には株式会社東京、名古屋株式会社、 有限会社大阪、京都合資会社など様々な 法人名のつけ方があります。 したがって、会社名のテーブルが有り、 なおかつ質問のテーブルに正確に 会社名が記載されていることが前提として あるならばそれなりの方法はあります。 質問のテーブルでは会社名と営業所を 分割する基準がないのです。 営業所名にしてもA社東京、の場合も あるかもしれないし、F社東京千代田 となっているかもしれない、という ことを考えれば、会社名一覧テーブルが 必須だと思いますが。
お礼
おっしゃる通り、実際は様々なパターンが存在します。ご指摘の会社名一覧テーブルをヒントになんとか解決する事ができました。ご回答誠にありがとうございます。
お礼
ご回答ありがとうございます。貴重な時間を使って頂き、大変恐縮です。私はマクロの知識がありませんので、この機に勉強してみます。高度なご回答本当にありがとうございました。僕なりに質問後も何とか考えて、解決する事ができました。A社、B社のテーブルを作成して、二つのテーブルから、リレーションなしで何とかなりました。私がもう少し早く解決していればよかったのですが、本当に申し訳ありません。ありがとうございました。