はじめに
Accessでクロス集計をするとき、列の順番が指定できなかったり、集計結果によって列が出なかったりします。
そんなときに、列を固定する方法です。
列を固定する方法
クエリのプロパティシートのクエリ列見出しに、表示させたい列名を「,」で区切って入力します。
そうすれば、指定した順番で指定した列のみが表示されます。
手順
詳しく手順を説明します。(Access2016での手順です。)
プロパティシートのクエリ列見出しに表示させたい列名を「,」で区切って入力します。
例:"04月","05月","06月","07月","08月","09月","10月","11月","12月","01月","02月","03月"
実行すると、クエリ列見出しに指定した順番で列が表示されます。
SQL文の書き方
ちなみに、デザインビューではなくSQL文で書く場合はこんな感じです。
--列を固定しない場合
TRANSFORM Sum(売上.売上金額) AS 売上金額の合計
SELECT 売上.商品コード, 売上.商品名
FROM 売上
GROUP BY 売上.商品コード, 売上.商品名
ORDER BY 売上.商品コード, 売上.売上月
PIVOT 売上.売上月;
--列を固定する場合
TRANSFORM Sum(売上.売上金額) AS 売上金額の合計
SELECT 売上.商品コード, 売上.商品名
FROM 売上
GROUP BY 売上.商品コード, 売上.商品名
ORDER BY 売上.商品コード, 売上.売上月
PIVOT 売上.売上月 In ("04月","05月","06月","07月","08月","09月","10月","11月","12月","01月","02月","03月");
PIVOT句の後に「In ()」で指定すれば、列を固定することが出来ます。
おわりに
クエリ列見出しで指定した列以外は表示されないので注意が必要ですが、列を固定するか、集計結果によって列を動的に変化させるか、場合によって使い分けると便利かもしれません。