Edited at

Accessのクロス集計で列を固定する

More than 1 year has passed since last update.


はじめに

Accessでクロス集計をするとき、列の順番が指定できなかったり、集計結果によって列が出なかったりします。

そんなときに、列を固定する方法です。

0001.JPG

集計結果にない列は表示されない


列を固定する方法

クエリのプロパティシートのクエリ列見出しに、表示させたい列名を「,」で区切って入力します。

そうすれば、指定した順番で指定した列のみが表示されます。


手順

詳しく手順を説明します。(Access2016での手順です。)

クエリをデザインビューで開きます。

0002.JPG

デザイングリッドの列見出しのフィールドをクリックします。

0003.JPG

プロパティシートのクエリ列見出しに表示させたい列名を「,」で区切って入力します。

例:"04月","05月","06月","07月","08月","09月","10月","11月","12月","01月","02月","03月"

0004.JPG

実行すると、クエリ列見出しに指定した順番で列が表示されます。

0005.JPG


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 ()」で指定すれば、列を固定することが出来ます。


おわりに

クエリ列見出しで指定した列以外は表示されないので注意が必要ですが、列を固定するか、集計結果によって列を動的に変化させるか、場合によって使い分けると便利かもしれません。