Ada begitu banyak hal yang salah, sulit untuk mengetahui dari mana harus memulai.
Anda mencampuradukkan dua bentuk CASE ekspresi. Salah satu bentuknya adalah:
CASE <expression>
WHEN <value> THEN <result>
WHEN <value> THEN <result>
...
END
yang lainnya adalah:
CASE
WHEN <condition> THEN <result>
WHEN <condition> THEN <result>
...
END
Anda mencoba menggunakan SELECT kueri sebagai nilai, tetapi tidak ada FROM klausa dan Anda harus membungkus kueri dalam tanda kurung untuk menggunakannya sebagai nilai. Saya menduga Anda ingin ini menanyakan dari tabel yang sama, dalam hal ini Anda tidak boleh melakukan subquery, Anda hanya harus menggunakan fungsi agregasi dalam kueri utama.
CASE ekspresi harus menjadi bagian dari SELECT daftar, bukan setelah FROM klausa.
Jika Anda ingin membuat kolom terpisah dalam output untuk setiap kasus, kolom tersebut tidak boleh dalam satu CASE ekspresi.
Anda memiliki semua nama tabel dan kolom dalam tanda kutip ganda, MySQL menggunakan backticks untuk mengutip nama.
Anda tidak perlu SELECT DISTINCT saat menggunakan GROUP BY .
Anda tidak dapat merujuk ke alias di SELECT daftar dalam kueri yang sama, kecuali di GROUP BY , ORDER BY , dan HAVING .
Seharusnya:
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