間違っていることがたくさんあるので、どこから始めればよいのかわかりません。
CASE
の2つの形式を混同しています 表現。 1つの形式は次のとおりです:
CASE <expression>
WHEN <value> THEN <result>
WHEN <value> THEN <result>
...
END
もう1つは:
CASE
WHEN <condition> THEN <result>
WHEN <condition> THEN <result>
...
END
SELECT
を使用しようとしています 値としてクエリを実行しますが、FROM
がありません 句であり、値として使用するには、クエリを括弧で囲む必要があります。これを同じテーブルからクエリする必要があると思われます。その場合、サブクエリを実行するのではなく、メインクエリで集計関数を使用する必要があります。
CASE
式はSELECT
の一部である必要があります FROM
の後ではなくリスト 条項。
ケースごとに出力に個別の列を作成する場合は、1つのCASE
に含めることはできません。 表現。
すべてのテーブル名と列名は二重引用符で囲みます。MySQLはバッククォートを使用して名前を引用します。
SELECT DISTINCT
は必要ありません GROUP BY
を使用する場合 。
SELECT
でエイリアスを参照することはできません GROUP BY
を除いて、同じクエリにリストします 、ORDER BY
、およびHAVING
。
次のようになります:
SELECT MONTH(Facturation) AS month, LRU, Client,
AVG(CASE WHEN MONTH(Factuation) = 1 AND Facturation BETWEEN 1 AND 6
THEN Montant_fac_eur END) AS c1,
AVG(CASE WHEN MONTH(Factuation) = 2 AND Facturation BETWEEN 2 AND 7
THEN Montant_fac_eur END) AS c2,
AVG(CASE WHEN MONTH(Factuation) = 3 AND Facturation BETWEEN 3 AND 8
THEN Montant_fac_eur END) AS c3,
AVG(CASE WHEN MONTH(Factuation) = 4 AND Facturation BETWEEN 4 AND 9
THEN Montant_fac_eur END) AS c4,
...
FROM foundry_sync.data
GROUP BY `LRU`, `Client`, `Facturation`
ORDER BY Client, month