Débuté par Simo, 11 avr. 2025 13:05 - 1 réponse
Posté le 11 avril 2025 - 13:05
Bonjour J'ai un message d'erreur d'agrégats merci d'avance de me corriger mon problème dans cette j'ai le message suivant : Les fonctions agrégats(COUNT, AVG, SUM, MIN, MAX) ne sont pas autoriseés endehors des clauses SELECT ou HAVING Erreur detectée ligne 6, colonne 12: IFNULL(>>>>SUM(CASE WHEN AC.EtatCommandeLigne IN('FA,'BL') AND AC.TypeDocument IN('0','3') THEN AC.Quantite_Livr ELSE 0 ENDreq est une Requête SQL = [ SELECT A.Reference, //-- Référence de l'article A.ARTICLE, //-- Libellé de l'article //-- Calcul des achats nets IFNULL(SUM(CASE WHEN AC.EtatCommandeLigne IN ('FA', 'BL') AND AC.TypeDocument IN ('0', '3') THEN AC.Quantite_Livr ELSE 0 END), 0) AS TotalAchats, IFNULL(SUM(CASE WHEN AC.EtatCommandeLigne IN ('AV', 'RB', 'RT', 'RS', 'BF') THEN AC.Quantite_Livr ELSE 0 END), 0) AS TotalAvoirs, //-- Calcul des ventes nettes IFNULL(SUM(CASE WHEN VC.EtatCommandeLigne IN ('FA', 'BL', 'TK', 'BS', 'ED') THEN VC.Quantite_Livr ELSE 0 END), 0) AS TotalVentes, IFNULL(SUM(CASE WHEN VC.EtatCommandeLigne IN ('AV', 'RB', 'RT', 'RS', 'RD') THEN VC.Quantite_Livr ELSE 0 END), 0) AS TotalVentesAvoirs, //-- Calcul du stock = Achats - Ventes (IFNULL(SUM(CASE WHEN AC.EtatCommandeLigne IN ('FA', 'BL') AND AC.TypeDocument IN ('0', '3') THEN AC.Quantite_Livr ELSE 0 END), 0) IFNULL(SUM(CASE WHEN VC.EtatCommandeLigne IN ('FA', 'BL', 'TK', 'BS', 'ED') THEN VC.Quantite_Livr ELSE 0 END), 0)) AS Stock FROM FARTICLES A LEFT JOIN FLigneCde_A AC ON AC.Reference = A.Reference LEFT JOIN FLigneCde VC ON VC.Reference = A.Reference WHERE A.NonUtilisé = 0 AND A.ArticleBloque = 0 AND A.Service = 0 AND AC.NumSite = 1 AND VC.NumSite =1 AND AC.Annee = 2025 AND VC.Annee =2025 AND AC.ND=1 AND AV.ND=1 GROUP BY A.Reference, A.ARTICLE ] POUR TOUT req ligne= TABLE.AjouteLigne( ) CO L_Refrence[ ligne] = req.Reference CO L_Article[ ligne] = req.ARTICLE CO L_Stock[ ligne] = req.Stock CO L_Vente[ ligne] = req.TotalVentes CO L_ACHETE[ ligne] = req.TotalAchats CO L_Ecart[ ligne] = req.TotalVentes - Abs ( req.Stock) FIN
Membre enregistré 43 messages
Posté le 11 avril 2025 - 16:37
Bonjour, Difficile à tester sans base, personnellement je supprimerai les IFNULL, puis je transformerait ma requête principale en sous requête pour pouvoir récupérer les résultats et appliquer les IFNULL à ce moment là. Cordialement.