Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 VBA : Erreur sur GROUP BY

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Bonjour,

Je reçois une erreur : "ORA-00979 : not a group by expression." Je ne comprends pas pourquoi car j'avais sélectionné les champs du GROUP BY dans SELECT.
Voici mon code :

VB:
RECSET2.Open " select dossier.NO_POLICE, ev1.D_EFFET, ev1.ID_FAMILLE_PORTEF, ev1.ID_PORTEFEUILLE, gr.LB_COURT_GR_EVT, pers1.S_PRENOM||' '||pers1.S_NOM as Collaborateur, proto.CD_PROTOCOLE, ev1.ID_FAMILLE_PORTEF,comm.L_COMMENT_DOSSIER," & _
    " dossier.UI_CREATION, ev1.LP_STATUT_EVT, sum(ev3.MT_BRUT) as Ecart, ev1.MT_BRUT, tiers2.CD_TIERS as Tmandataire, pers3.S_RAISONSOC as Mandataire,tiers1.CD_TIERS as Tdepositaire, pers2.S_RAISONSOC as Depositaire, ev1.IS_EVENEMENT from DB_DOSSIER dossier left join DB_EVENEMENT ev1 " & _
    " on dossier.IS_DOSSIER = ev1.IS_DOSSIER  left join DB_EVENEMENT ev2 on ev1.IS_EVENEMENT=ev2.IS_EVENEMENT_PERE  left join DR_LIEN_EVT drevl on ev2.IS_EVENEMENT=drevl.IS_EVENEMENT left join DB_EVENEMENT ev3 on drevl.IS_EVT_LIE=ev3.IS_EVENEMENT  left join DP_CLASSE_EVT cl on ev1.IS_CLASSE_EVT=cl.IS_CLASSE_EVT " & _
    " left join DP_GROUPE_EVT  gr on cl.IS_GR_EVT=gr.IS_GR_EVT left join DB_COMMENT_DOSSIER comm on dossier.IS_DOSSIER=comm.IS_DOSSIER left join DR_COLLABORATEUR_PROTOCOLE collabproto on dossier.IS_PROTOCOLE=collabproto.IS_PROTOCOLE left join DB_COLLABORATEUR collab on collabproto.IS_COLLABORATEUR=collab.IS_COLLABORATEUR " & _
    " left join DB_PERSONNE pers1 on collab.IS_PERSONNE=pers1.IS_PERSONNE left join DB_PROTOCOLE  proto on dossier.IS_PROTOCOLE=proto.IS_PROTOCOLE left join DB_PORTEFEUILLE  portef1 on ev1.ID_FAMILLE_PORTEF=portef1.ID_FAMILLE_PORTEF and  ev1.ID_PORTEFEUILLE=portef1.ID_PORTEFEUILLE left join DB_TIERS  tiers1 on tiers1.IS_TIERS=portef1.IS_TIERS_DEPOSITAIRE  " & _
    " left join DB_PERSONNE  pers2 on tiers1.IS_PERSONNE=pers2.IS_PERSONNE left join DB_TIERS tiers2 on tiers2.IS_TIERS=portef1.IS_TIERS_GESTIONNAIRE left join DB_PERSONNE  pers3 on tiers2.IS_PERSONNE=pers3.IS_PERSONNE " & _
    " where dossier.CD_DOSSIER in ('COROP','COROC') and dossier.LP_ETAT_DOSS not in ('CLOSE','ANNUL','A30') and ev1.D_EFFET>='" & Ma_date & "' and ev1.IS_EVENEMENT_PERE is null and drevl.LP_LIEN_EVT in ('COROP','COROC') group by ev1.NO_POLICE, ev1.IS_EVENEMENT, ev1.D_EFFET, dossier.UI_CREATION ", cnn_Pegase, adOpenDynamic, adLockBatchOptimistic


Merci pour votre aide !
 
Dernière édition:

dysorthographie

XLDnaute Accro
Bonjour,
comme dit par p56, le group By n'a de sens que pour des requête de statistique!

pas pour dédoublonner les enregistrements!
VB:
select Champs
From Left Join
where
Group By
Having 'même utilisation que Where mais pour ce qui concerne le Group BY

Having count(Champ)>10!
de plus le group By doit avoir les même champ que le select en excluent les Count, Sum AVG Etc...

pour ce qui concerne ton problème pas de group By mais
Code:
Select Distinct Champs Etc!
 
Dernière édition:

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Bonjour,
Merci pour votre réponse, effectivement, je voulais faire SUM(ev3.MT_BRUT) as Ecart. D'où GRROUP BY. J'ai fait la maj du code.
 

VBA_dev_Anne_Marie

XLDnaute Occasionnel
En fait, quand je teste avec mon SUM et GROUP BY, j'ai une autre erreur : NOT A GROUP BY EXPRESSION
 

dysorthographie

XLDnaute Accro
voila à quoi devrait ressembler ton GROUP BY en fonction des champs sélectionnés!
VB:
    " group by dossier.NO_POLICE, ev1.D_EFFET, ev1.ID_FAMILLE_PORTEF, ev1.ID_PORTEFEUILLE, gr.LB_COURT_GR_EVT, pers1.S_PRENOM||' '||pers1.S_NOM as Collaborateur, proto.CD_PROTOCOLE, ev1.ID_FAMILLE_PORTEF,comm.L_COMMENT_DOSSIER," & _
    " dossier.UI_CREATION, ev1.LP_STATUT_EVT, ev1.MT_BRUT, tiers2.CD_TIERS as Tmandataire, pers3.S_RAISONSOC as Mandataire,tiers1.CD_TIERS as Tdepositaire, pers2.S_RAISONSOC as Depositaire, ev1.IS_EVENEMENT"
 

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Merci ! C'est plutôt :
" group by dossier.NO_POLICE, ev1.D_EFFET, ev1.ID_FAMILLE_PORTEF, ev1.ID_PORTEFEUILLE, gr.LB_COURT_GR_EVT, pers1.S_PRENOM, pers1.S_NOM, proto.CD_PROTOCOLE, ev1.ID_FAMILLE_PORTEF,comm.L_COMMENT_DOSSIER, dossier.UI_CREATION, ev1.LP_STATUT_EVT, ev1.MT_BRUT, tiers2.CD_TIERS, pers3.S_RAISONSOC,tiers1.CD_TIERS, pers2.S_RAISONSOC, ev1.IS_EVENEMENT " ?
 

VBA_dev_Anne_Marie

XLDnaute Occasionnel
En fait, je dois mettre tout sauf le champ sommé ?
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…