Excel VBA ADODB:ORA00979:不是按表达式分组

Excel VBA ADODB:ORA00979:不是按表达式分组,excel,vba,adodb,Excel,Vba,Adodb,我不知道为什么我在求和函数上出现错误:“ORA-00979:不是表达式分组”: 我的代码是: 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_

我不知道为什么我在求和函数上出现错误:“ORA-00979:不是表达式分组”:

我的代码是:

 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

谢谢你的帮助

按除聚合列以外的所有列分组

按档案分组。无警察,ev1.D\U EFFET,ev1.ID\U FAMILLE\U PORTEF,
ev1.ID_Portefueille,gr.LB_COURT_gr_EVT,
员工1.S|PRENOM | | | |员工1.S|NOM,proto.CD|u PROTOCOLE,ev1.ID|u FAMILLE|u PORTEF,
comm.L\u COMMENT\u docsier,docsier.UI\u CREATION,ev1.LP\u status\u EVT,
ev1.MT\U BRUT、tiers2.CD\U层、pers3.S\U RAISONSOC、,
层1.CD层、人员2.S层、ev1.IS层

您没有分组,所以求和的意义是什么?@Rory谢谢,我需要将select语句中的所有变量按语句分组吗?我想用ev1.NO_POLICE、ev1.IS_evement、ev1.D_EFFET、dossier.UI_creation计算总和这不是VBA或Excel问题,而是纯SQL。您需要了解聚合函数(例如SUM)和GROUPBY子句的用法和逻辑。显然您正在使用Oracle:请使用SQL Developer或类似工具,在将其放入VBA之前,尝试找出正确的语句。@FunThomas谢谢您的建议。我在SAS上尝试了这段代码(proc sql with group by ev1.NO_POLICE、ev1.IS_evement、ev1.D_EFFET、dossier.UI_CREATION)。代码起作用了。我知道SQL的正确语句。我是VBA新手,我只是不知道如何在VBA上翻译我的代码。@Rory当我放入group by语句时,我有另一个错误:不是group by expressin。我不知道为什么,因为我已经在SELECT语句中选择了group by的所有列。。。