質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

342閲覧

マスターテーブルのレコード数とクロス集計クエリの列見出しフィールド数を同数にしたい

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2023/05/18 02:19

実現したいこと

値がないフィールドもクロス集計クエリのフィールドに表示させたい

前提

AccessからテーブルやクエリをExcelにエクスポートし、Excel上で客先要望の表に整形するフォームを作成しています。
イメージ説明
❶のマスターテーブルの行列入れ替えを行ったものを❷のように表のヘッダーとして扱い、❸のクロス集計クエリをエクスポートしたものをヘッダーの下に置き、表を整形しようと考えています。

発生している問題・エラーメッセージ

誰も商品番号3を購入していない場合、❸のクロス集計を作ろうと思っても3のフィールドが出てこないので列数がヘッダーと一致しなくなってしまいます。これを解決したいです。

該当のソースコード

ソースコードは特にありません

試したこと

全ての商品を0個購入したダミーのレコードを作成することで全てのフィールドを表示させることができました。
また、クロス集計クエリのプロパティで列見出しに全ての商品番号を打ち込むことでも表示させることができました。
これら以外で表示させる方法はないでしょうか?

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

テーブル情報がないので下記のようだと仮定して回答します。

商品マスタ(※商品番号, 会社名, 商品名, 価格)

売上履歴(※売上ID, 購入日, 購入者, 商品番号, 購入数)

※は主キーフィールド

まず、下記のようクエリを作成します。クエリ名は Q売上マスター とします。

SQL

1SELECT DISTINCT 商品マスタ.商品番号, 売上履歴.購入日, 売上履歴.購入者 2FROM 商品マスタ, 売上;

上記のクエリと売上履歴から下記のようなクロス集計クエリを作成すればいいでしょう。

SQL

1TRANSFORM Sum(売上履歴.購入数) 2SELECT Q売上マスタ.購入日, Q売上マスタ.購入者 3FROM Q売上マスタ LEFT JOIN 売上 ON (Q売上マスタ.購入者 = 売上履歴.購入者) AND (Q売上マスタ.購入日 = 売上履歴.購入日) AND (Q売上マスタ.商品番号 = 売上履歴.商品番号) 4GROUP BY Q売上マスタ.購入日, Q売上マスタ.購入者 5PIVOT Q売上マスタ.商品番号;

一応、ロジックを解説しておきます。

まず、最初のクエリで、すべての商品番号、購入日、購入者の組み合わせを出力します。
2つのテーブルをリンクしないことですべての組み合わせを出力できます(直積)。
DISTINCT で重複を排除します。

これと売上履歴を外部結合すれば、売上履歴に存在しない組み合わせのレコードも出力できます。これをクロス集計クエリにすればすべての列見出しを出力できます。

投稿2023/05/18 05:59

編集2023/05/18 06:57
hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/05/18 07:06

丁寧に解説までありがとうございます! SQLでクエリ作ったことないので回答参考にしながらやってみます 以前からエクスポート後の行列変換等で質問を繰り返していたフォーム作成ですが、先日無事に形になりました! 本当にお世話になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問