
strSQL = strSQL & " transform sum(売上) as 金額 "
strSQL = strSQL & " SELECT "
strSQL = strSQL & " 支店番号 "
strSQL = strSQL & " FROM [顧客マスタ$] "
strSQL = strSQL & " WHERE "
strSQL = strSQL & " 日付 "
strSQL = strSQL & " BETWEEN #2018/04/01# AND #2018/09/30#"
strSQL = strSQL & " GROUP BY 支店番号 "
strSQL = strSQL & " PIVOT month(日付) IN (4,5,6,7,8) "
これは通常のクロス集計です。これに加えて、
列に4月件数 4月合計 5月件数 5月合計
というふうにしたいのですが、画像も添付しました。
わかる方おしえていただけませんでしょうか。
transform COUNT(売上) as 金額
transform sum(売上) as 金額
どうもうまくいきません。

No.7ベストアンサー
- 回答日時:
#6です
> strSQL = "TRANSFORM SUM(IIF(S=1,1,売上)) AS 値 "構文エラーとなります。
> 恐れ入りますが おしえてくれませんでしょうか
各行間は、少なくとも空白が1つはある
" は ' に変更して良さそう
ということであれば、わかりません
Access の SQLビュー で作成・それなりに表示されたものを、
テーブル名のみ変更して提示しただけです
※ ブログには、サンプルファイル付けていたと思うけど・・・
No.8
- 回答日時:
横から失礼いたします。
>もう一度言います
>> Access のクエリの SQLビュー をVBA 用に変更した経験は無いのですか?
過去の質問をいくつか見てきましたが、ExcelVBAによりADOでBookやCSVファイルへ接続する質問になってました。
個人的にですがAccessの経験はないように感じました。
No.6
- 回答日時:
#5 です
もう一度言います
> Access のクエリの SQLビュー をVBA 用に変更した経験は無いのですか?
クエリの SQLビュー に記述した、例えば "件数"
VBA の文字列に指定する時には
""件数"" とするか '件数' にします
strSQL = strSQL & "PIVOT Month(日付) & "月" & IIF(S=1,"件数","合計");
↓
strSQL = strSQL & "PIVOT Month(日付) & ""月"" & IIF(S=1,""件数"",""合計"");"
とか
strSQL = strSQL & "PIVOT Month(日付) & '月' & IIF(S=1,'件数','合計');"
文字列内の " の扱いの基本と思います
No.5
- 回答日時:
#4です
良く見たら、空白以前の問題ですね
strSQL = "TRANSFORM SUM(IIF(S=1,1,売上)) AS 値 "
strSQL = "SELECT 支店番号 FROM ( "
↓
strSQL = "TRANSFORM SUM(IIF(S=1,1,売上)) AS 値 "
strSQL = strSQL & "SELECT 支店番号 FROM ( "
No.4
- 回答日時:
#3です
Access のクエリの SQLビュー をVBA 用に変更した経験は無いのですか?
簡単に言えば、
文字列を結合する際には、各行 間に、空白を入れます
提示されたものは、先頭に空白有るようですが???
> strSQL = "TRANSFORM SUM(IIF(S=1,1,売上)) AS 値"
> strSQL = "SELECT 支店番号 FROM ("
↓
strSQL = "TRANSFORM SUM(IIF(S=1,1,売上)) AS 値 "
strSQL = "SELECT 支店番号 FROM ( "
でないと、
・・・値SELECT ・・・・ って、何???
・・・値 SELECT ・・・
※ 上記は、各文字列の後に空白入れてみましたが・・・・
No.3
- 回答日時:
クエリの SQLビューに以下を記述し、表示してみてどうなりますか
TRANSFORM SUM(IIF(S=1,1,売上)) AS 値
SELECT 支店番号 FROM (
SELECT 1 AS S, * FROM [顧客マスタ$]
UNION ALL
SELECT 2, * FROM [顧客マスタ$]) AS Q1
WHERE 日付 BETWEEN #2018/04/01# AND #2018/09/30#
GROUP BY 支店番号
PIVOT Month(日付) & "月" & IIF(S=1,"件数","合計");
この方法での説明は、ブログでやってますが・・・・
複数列への仕方とか、列合計の組み込み方とか・・・・
でも、URL 記述すると営利目的だか何だかで、事務局に削除されるので・・・・
似たような回答した、以下から辿ってみるとか・・・・
Access2013を使っています。 クロス集計の値が
https://detail.chiebukuro.yahoo.co.jp/qa/questio …
No.2
- 回答日時:
私もあまり詳しくはないのですみませんが、以降に書いたような感じでもよいのでしょうか・・・??意味が違ってたらほんとうにすみません。
(※今気が付きましたが、テーブル定義で間違って「売上」を「金額」というフィールド名にしてやってしまいました。「金額」は「売上」に読み替えてください。すみません。)
(01)Accessの場合
(テーブルは「Sheet1」というテーブルを作って使用:金額合計のみ)
「金額だけ」の月ごとのクロス集計なら以下のような感じで・・・。
TRANSFORM Sum(金額)
SELECT 支店番号
FROM Sheet1
WHERE 日付 BETWEEN #2018/04/01# AND #2018/09/30#
GROUP BY 支店番号
PIVOT Month(日付) & '月の金額';
(02)ExcelのMicrosoftQueryの場合
(D:\1\1.xlsx の 「Sheet1」シートを使用:金額合計のみ)
こちらも「金額だけ」。
TRANSFORM Sum(金額)
SELECT 支店番号
FROM `D:\1\1.xlsx`.`Sheet1$` `Sheet1$`
WHERE 日付 BETWEEN #2018/04/01# AND #2018/09/30#
GROUP BY 支店番号
PIVOT Month(日付) & '月の金額';
(03)「金額も件数も同時に」、という場合なら、苦肉の策で以下のような感じですとか・・・(FROM句の副問い合わせの中のWHERE句は、長くなるので省略してます。)
添付した図のようになります。
私も調べてみたのですが、TRANSFORM はもしかしたら、「集計用(値)の列」としては「1つの列しか作れない」かもしれません。よくはわかりませんが・・・。
なので、より詳しく分かる方に「そもそも TRANSFORM句で2つの集計列を作れますか?」というご質問もされるとよいかもしれません。
私には、(01)や(02)のようなクエリを、金額と件数の2つを作って、支店番号でリレーションさせることくらいしか思いつきませんでした。
以下の例は、1つの集計列(値の列)の中で、数量と金額の2つの計算をして、「/」でつないでいます。
データの無い月は何もしないと「/」が表示されてしまうので「IIf」関数で条件分岐処理しました。
【Accessの場合】
TRANSFORM IIf(Sum([T1.数量])<>0,Sum([T1.数量]*[T1.金額]) & '/' & Sum([T1.数量]),'')
SELECT T1.支店番号
FROM (SELECT Sheet1.支店番号, Month(Sheet1.日付) & '月の金額と個数' AS [月] , Sheet1.日付, Sheet1.金額, 1 AS [数量] FROM Sheet1) AS T1
GROUP BY T1.支店番号
PIVOT T1.月;
【ExcelのMicrosoftQueryの場合】
TRANSFORM IIF(SUM([T1.数量])<>0 ,SUM([T1.数量]*[T1.金額]) & '/' & SUM([T1.数量]) ,'')
SELECT T1.支店番号
FROM (SELECT 支店番号, Month(日付) & '月の金額と個数' AS [月] , 日付, 金額, 1 AS [数量] FROM `D:\1\1.xlsx`.`Sheet1$` `Sheet1$`) AS T1
GROUP BY T1.支店番号
PIVOT T1.月

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) SQLで抽出 4 2022/12/04 13:55
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) 日付を重複させずに数えたい 4 2022/12/04 16:26
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL あっってますか?うまくいきません教えてくださいお願いします?? 2 2023/07/01 13:02
このQ&Aを見た人はこんなQ&Aも見ています
-
クロス集計クエリの結果をテーブルにしたい
Access(アクセス)
-
【アクセス】クエリで、行と列を入れ替えるには?【access】
Access(アクセス)
-
【Accessで困っています】クロス集計の列見出し
その他(Microsoft Office)
-
-
4
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
5
アクセスVBAのMe!と[ ]
Access(アクセス)
-
6
アクセスのフィールド表示を2段にする方法・抽出の方法
Access(アクセス)
-
7
「#エラー」の回避
Access(アクセス)
-
8
Access 複数のクエリの結果をひとつの表にまとめたいのですが
Access(アクセス)
-
9
Accessのテーブルのフィールドに式を入れる方法
Access(アクセス)
-
10
アクセスで複数のレコード情報を1レコードにまとめる方法
Access(アクセス)
-
11
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
12
ACCESSのクエリー抽出条件にIIFを使用して
Access(アクセス)
-
13
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
14
アクセス クロス集計クエリ→テーブル作成クエリ
その他(Microsoft Office)
-
15
Accessのクロス集計→テーブル作成で値がない場合の対処法
Access(アクセス)
-
16
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
17
【Access】クエリで抽出したデータをCSV形式でエクスポートできますか?
Access(アクセス)
-
18
アクセスで同じ種類のものを横に並べたい
Access(アクセス)
-
19
VBAをつかってクエリの情報を抽出するには??
Visual Basic(VBA)
-
20
選択クエリで空欄のテーブルがあっても表示したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAX(都道府県名)
-
クロス集計クエリについて
-
シートを別ブックにコピーして...
-
【マクロ】列を折りたたみ非表...
-
「直需」の意味を教えてください
-
一時的なワークスペースのよう...
-
複数のテーブルに対して・・・
-
ACCESS:参照整合性がとれない
-
Excel 2019 のピボットテーブル...
-
複数のテーブルをつなげる
-
エクセルのフィルタオプション...
-
Access2000におけるテーブル追...
-
FileMakerPro6でのポータルの活...
-
GeForce ExperienceのSHADOW PL...
-
受注受付期間とはなんですか?...
-
エクセル抽出・コード番号から...
-
アクセスの集計方法?正規化?...
-
クエリにSQL文を書き込みたい
-
エクセルで困ってます
-
Access SELECT INTO に関する質...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FROM の中で CASE を使えるでし...
-
ACCESSのクエリで集計で、先頭...
-
複数列フィールド値のクロス集計
-
access 存在しない項目を”0件”...
-
桐の集計(集計行設定のこと)...
-
Accessフォームにクロス集計ク...
-
クロス集計の結果を元に戻す方法
-
AccessからExcelへエクスポート...
-
VBA 得意先ごと且つ日付ごとに...
-
アクセスクエリ 締め日毎で絞...
-
MS-Accessのクロス集計クエリと...
-
アクセス レポートのテキスト...
-
「警告 : NULL 値は集計または...
-
Accessで別テーブルの個数をユ...
-
Accessで年齢から年代ごとの集計
-
SQLserver 型違いの日付の比較...
-
Access2007 年度ごとの四半期...
-
Accessのクエリをクロス集計ウ...
-
accessクロス集計で前月21日~...
-
アクセス2003のsum([金額])で...
おすすめ情報
Excelの標準モジュール
strSQL = "TRANSFORM SUM(IIF(S=1,1,売上)) AS 値"
strSQL = "SELECT 支店番号 FROM ("
strSQL = "SELECT 1 AS S, * FROM [顧客マスタ$]"
strSQL = "Union ALL"
strSQL = "SELECT 2"
strSQL = "SELECT 2, * FROM [顧客マスタ$]) AS Q1"
strSQL = "WHERE 日付 BETWEEN #2018/04/01# AND #2018/09/30#"
strSQL = "GROUP BY 日付番号"
strSQL = "PIVOT Month(日付) & "月"& IIF(S=1,"件数","合計");
↑ここが恐らくおかしいのかも
恐らく、なにかをなおせば成功する
助けてください
いろいろためしましたが
strSQL = "PIVOT Month(日付) & "月"& IIF(S=1,"件数","合計");"
strSQL = "TRANSFORM SUM(IIF(S=1,1,売上)) AS 値 "
strSQL = strSQL & "SELECT 支店番号 FROM ( "
修正しました。strSQL = strSQL & "PIVOT Month(日付) & "月" & IIF(S=1,"件数","合計");
この部分の文字の色が変わりじっこうできません
こちらで問題なくなりました。
strSQL = strSQL & "PIVOT Month(日付) & '月' & IIF(S=1,'件数','合計');"
strSQL = "TRANSFORM SUM(IIF(S=1,1,売上)) AS 値 "構文エラーとなります。
恐れ入りますが おしえてくれませんでしょうか