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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
クロス集計クエリの結果をテーブルにしたい
Access(アクセス)
-
【Accessで困っています】クロス集計の列見出し
その他(Microsoft Office)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
-
4
アクセスのフィールド表示を2段にする方法・抽出の方法
Access(アクセス)
-
5
クロス集計のユニオンクエリーがうまくできません
その他(データベース)
-
6
MS-Accessのクロス集計クエリとピボットテーブルについて
その他(データベース)
-
7
アクセス クロス集計クエリ→テーブル作成クエリ
その他(Microsoft Office)
-
8
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
9
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
10
AccessVBA RecordSourceのリセットについて
Access(アクセス)
-
11
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
12
access 2010 複数フィールドの集計について access初心者なので教えて下さい。 車の
Access(アクセス)
-
13
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
14
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
15
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
16
access マクロでのフィルタの解除の方法
Access(アクセス)
-
17
Accessのクロス集計クエリから、追加クエリをvbaで記述したいが記述が分からない。
その他(データベース)
-
18
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
19
Access VBA を利用して、フォルダ内のファイルの名称を変更したい
Access(アクセス)
-
20
ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのクエリで集計で、先頭...
-
FROM の中で CASE を使えるでし...
-
Accessフォームにクロス集計ク...
-
AccessからExcelへエクスポート...
-
複数列フィールド値のクロス集計
-
クロス集計の結果を元に戻す方法
-
桐の集計(集計行設定のこと)...
-
★アクセス2002★クロス集計で ...
-
Access 抽出データ件数のカウン...
-
アクセスクエリ 締め日毎で絞...
-
Excel 2019 のピボットテーブル...
-
Accessのリンクテーブルのパス...
-
「直需」の意味を教えてください
-
Accessでテーブルの値をテキス...
-
エクセルVBAで5行目からオート...
-
accessのレポートで元になるテ...
-
複数のレコードを1つのレコード...
-
Oracle 2つのDate型の値の差を...
-
作番ってどういう意味でしょうか?
-
Accessでテーブル名やクエリ名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FROM の中で CASE を使えるでし...
-
ACCESSのクエリで集計で、先頭...
-
複数列フィールド値のクロス集計
-
「警告 : NULL 値は集計または...
-
AccessからExcelへエクスポート...
-
access 存在しない項目を”0件”...
-
クロス集計の結果を元に戻す方法
-
桐の集計(集計行設定のこと)...
-
Accessフォームにクロス集計ク...
-
accessクロス集計で前月21日~...
-
アクセスクエリ 締め日毎で絞...
-
VBA 得意先ごと且つ日付ごとに...
-
Access 抽出データ件数のカウン...
-
Accessで年齢から年代ごとの集計
-
アクセス レポートのテキスト...
-
MS-Accessのクロス集計クエリと...
-
SQLのクエリの書き方を教えて下...
-
ACCESS レポートでページごとに...
-
ファイルメーカーでピボットテ...
-
レポートウィザードの集計のオ...
おすすめ情報
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 値 "構文エラーとなります。
恐れ入りますが おしえてくれませんでしょうか