Bonjour à tous,

J'aurai besoin d'extraire le MAX() d'un mois de dépenses d'une année donnée, j'ai actuellement créé la requête suivante qui me sert de requête pivot (1) puis la requête sensée extraire le max du mois (2):

Il n'y a que 3 champs : [date_depense],[prix_unitaire]*[quantite], j'ai essayé avec une requête du genre ci-dessous mais les résultats sont erronés :

1/ Requête qui marche :

//Obtenir les colonnes de dépenses par mois et année pour graphiques (année spécifique)
    public function getColonnesDepensesParAnnee($selectionAnnee)
    {
        return $this->createQueryBuilder('d')
            ->select("
SUM(CASE WHEN MONTH(d.date_depense)='1' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='2' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='3' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='4' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='5' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='6' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='7' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='8' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='9' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='10' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='11' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='12' THEN d.prix_unitaire * d.quantite ELSE 0 END)")
            ->setParameter(':annee', $selectionAnnee)
            ->andWhere('YEAR(d.date_depense)=:annee')
            ->getQuery()->getScalarResult();
    }

2/ Requête erronée :

 public function getMaxMoisDepensesParAnnee($selectionAnnee)
    {
        return $this->createQueryBuilder('d')
            ->select("MAX((d.prix_unitaire * d.quantite)) AS maxValeurMoisDepenses,(date_format(d.date_depense,'%M')) as moisDepenses")
            ->setParameter(':annee', $selectionAnnee)
            ->andWhere('YEAR(d.date_depense)=:annee')
            ->getQuery()->getScalarResult();
    }

Merci d'avance pour vos conseils avisés

Aucune réponse