Er zijn zoveel dingen mis, het is moeilijk om te weten waar te beginnen.
Je haalt de twee vormen van CASE
door elkaar uitdrukking. Een vorm is:
CASE <expression>
WHEN <value> THEN <result>
WHEN <value> THEN <result>
...
END
de andere is:
CASE
WHEN <condition> THEN <result>
WHEN <condition> THEN <result>
...
END
Je probeert een SELECT
. te gebruiken query als een waarde, maar de FROM
. ontbreekt clausule en u moet een query tussen haakjes plaatsen om deze als waarde te gebruiken. Ik vermoed dat je wilde dat dit een query zou zijn vanuit dezelfde tabel, in welk geval je geen subquery zou moeten doen, je zou gewoon de aggregatiefunctie in de hoofdquery moeten gebruiken.
De CASE
expressie moet deel uitmaken van de SELECT
lijst, niet na de FROM
clausule.
Als u voor elk geval afzonderlijke kolommen in de uitvoer wilt maken, kunnen deze niet in één CASE
staan uitdrukking.
Je hebt al je tabel- en kolomnamen tussen dubbele aanhalingstekens, MySQL gebruikt backticks om namen te citeren.
Je hebt SELECT DISTINCT
niet nodig bij gebruik van GROUP BY
.
U kunt niet verwijzen naar een alias in de SELECT
lijst in dezelfde zoekopdracht, behalve in GROUP BY
, ORDER BY
, en HAVING
.
Het zou moeten zijn:
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