dポイントプレゼントキャンペーン実施中!

excel VBから直接ODBCにSQLを実行した時にエラーが出ます。
ソースコードは下記のようになっています。
strSQL = strSQL & "SELECT"
strSQL = strSQL & " 店舗別売上明細_22.売上年月日"
strSQL = strSQL & ",店舗別売上明細_22.抽出用屋号"
strSQL = strSQL & ",店舗別売上明細_22.抽出用商品ブランド名"
strSQL = strSQL & ",店舗別売上明細_22.出荷取引分類区分名"
strSQL = strSQL & ",SUM(店舗別売上明細_22.売上金額) as 合計"
strSQL = strSQL & ",店舗別売上明細_22.取引先コード"
strSQL = strSQL & " FROM"
strSQL = strSQL & " 店舗別売上明細_22"
strSQL = strSQL & " GROUP BY"
strSQL = strSQL & " 店舗別売上明細_22.売上年月日"
strSQL = strSQL & ",店舗別売上明細_22.抽出用屋号"
strSQL = strSQL & ",店舗別売上明細_22.抽出用商品ブランド名"
strSQL = strSQL & ",店舗別売上明細_22.出荷取引分類区分名"
strSQL = strSQL & ",店舗別売上明細_22.抽出用取引先名"
strSQL = strSQL & ",店舗別売上明細_22.商品区分"
strSQL = strSQL & ",店舗別売上明細_22.取引先コード"
strSQL = strSQL & " HAVING"
strSQL = strSQL & " 店舗別売上明細_22.売上年月日"
strSQL = strSQL & " Between 2010/01/01 And 2010/01/31"
strSQL = strSQL & " AND"
strSQL = strSQL & " 店舗別売上明細_22.抽出用商品ブランド名 = '****'"
strSQL = strSQL & " AND"
strSQL = strSQL & " 店舗別売上明細_22.商品区分 <> '05ノベルティ'"

GROUP BYを使わずにWHEREで実行するとうまくいきます。
原因がわかりますでしょうか?

A 回答 (2件)

厳密に言うと、HAVING句は集計した結果を条件に


する場合に使います。対して、WHERE句は最初から
分かっているレコード固有の値を条件にする場合に
使います。例えば、SUM(売上金額)>1000000という
条件は合計して始めて値が分かるので、HAVING句で
しか指定できません。しかし、売上年月日の範囲指定、
ブランド名等は最初からレコードにある値が条件なので、
WHERE句を使います。
    • good
    • 0
この回答へのお礼

参考になりました。
ありがとうございます。

お礼日時:2010/02/16 17:06

長らくやっていないのではずしているかもしれませんが、


「店舗別売上明細_22.商品区分」がグループに指定されているのに、選択項目として表示するようになっていませんね。これが原因と思いますよ。

「店舗別売上明細_22.出荷取引分類区分名」が正しいのでは?
    • good
    • 0
この回答へのお礼

それでもうまくいきませんでした。
もう少し自分で努力してみます。
ありがとうございました。

お礼日時:2010/02/16 17:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す