sql >> Database >  >> RDS >> Mysql

Een SQL-verzoek doen met CASE

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


  1. Tijd toevoegen in PHP

  2. Magento:productkenmerken toevoegen met module-installatiescript

  3. Modelleren van een open markt voor onderwijs

  4. FOUT! MySQL-manager of server-PID-bestand kon niet worden gevonden! QNAP