Der er så mange ting galt, det er svært at vide, hvor man skal begynde.
Du blander de to former for CASE udtryk. En formular er:
CASE <expression>
WHEN <value> THEN <result>
WHEN <value> THEN <result>
...
END
den anden er:
CASE
WHEN <condition> THEN <result>
WHEN <condition> THEN <result>
...
END
Du forsøger at bruge en SELECT forespørgsel som en værdi, men den mangler FROM klausul, og du skal pakke en forespørgsel i parentes for at bruge den som en værdi. Jeg formoder, at du ville have dette til at forespørge fra den samme tabel, i hvilket tilfælde du ikke skulle lave en underforespørgsel, du skulle bare bruge aggregeringsfunktionen i hovedforespørgslen.
CASE udtryk skal være en del af SELECT liste, ikke efter FROM klausul.
Hvis du vil oprette separate kolonner i outputtet for hver sag, kan de ikke være i én CASE udtryk.
Du har alle dine tabel- og kolonnenavne i dobbelte anførselstegn, MySQL bruger backticks til at citere navne.
Du behøver ikke SELECT DISTINCT når du bruger GROUP BY .
Du kan ikke henvise til et alias i SELECT liste i den samme forespørgsel, undtagen i GROUP BY , ORDER BY , og HAVING .
Det skal være:
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