アプリ版:「スタンプのみでお礼する」機能のリリースについて

商品別3ヶ月販売推移表の作成をするSQLでずが、FROM句の構文エラーですとメッセージが表示されます。どこが間違えているでしょうか。

SELECT
ProductID
, ProductName
, "6月販売金額"
, "7月販売金額"
, SWITCH ( "6月販売金額" < "7月販売金額" , '↑'
,"6月販売金額" = "7月販売金額" , '→'
,"6月販売金額" > "7月販売金額" ,'↓' ) AS 対6月増減
, "8月販売金額"
, SWITCH ( "7月販売金額" < "8月販売金額" , '↑'
,"7月販売金額" = "8月販売金額" , '→'
,"7月販売金額" > "8月販売金額" , '↓' ) AS 対7月増減
FROM
(
SELECT
p.ProductID
, p.ProductName
, SUM(SWITCH (s.SalesDate IS NULL, 0
, MID(CStr(s.SaleDate),1,7) = '2007-06', s.Quantity * p.Price
, not MID(CStr(s.SaleDate),1,7) = '2007-06', 0) AS 6月販売金額
, SUM(SWITCH (s.SalesDate IS NULL, 0
, MID(CStr(s.SaleDate),1,7) = '2007-07', s.Quantity * p.Price
, not MID(CStr(s.SaleDate),1,7) = '2007-07', 0) AS 7月販売金額
, SUM(SWITCH (s.SalesDate IS NULL, 0
, MID(CStr(s.SaleDate),1,7) = '2007-08', s.Quantity * p.Price
, not MID(CStr(s.SaleDate),1,7) = '2007-08', 0) AS 8月販売金額
FROM
Products AS p
LEFT OUTER JOIN
Sales AS s
ON p.ProductID = s.ProductID
GROUP BY
p.ProductID
p.ProductName
)
GROUP BY
p.ProductID
;

質問者からの補足コメント

  • うーん・・・

    以下のように、別名を付けましたが、同じエラーです。

    ) AS 商品別販売金額
    GROUP BY
    p.ProductID
    ;

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/04/28 08:57
  • 回答ありがとうございます。
    1)は、テーブルの項目名ではないので[]で括りました。
    また、IS NULLを = ""に変更して、エラー無しで保存できました。
    実行した結果、「NULL文字の使い方が正しくありません」とメッセージが表示されました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/04/28 12:59

A 回答 (2件)

よくよく見ると、他にも問題がありました。



1) "6月販売金額" 等と、列名を " で括ってますが、 AccessSQLではこれは「文字列」になります。
2)s.SalesDate と s.SaleDate が混在しています。
3)sum (〜 の括弧の数を確認しましょう。
4)サブクエリ内の GROUP BY p.ProductID p.ProductName の書き方がおかしいです。
5)最後の GROUP BY p.ProductID って、外側のSELECTでは集計関数を使っていないので不要なのでは。


2、3等は単純なミスです。
この回答への補足あり
    • good
    • 0
この回答へのお礼

FROM句の構文エラーは解決したので、一度締めて、新たに質問します。
ありがとうございました。

お礼日時:2020/04/28 21:08

サブクエリをFROMで指定する場合、 AS で別名を付ける必要があるのでは?

この回答への補足あり
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

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


このQ&Aを見た人がよく見るQ&A