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 mais renvoie un résultat erroné (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 :

Merci d'avance pour vos conseils avisés


1/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//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/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
    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();
    }