Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Futur Membre du Club
    ERREUR: ORA-00979: n'est pas une expression GROUP BY
    Bonjour à tous,

    J'ai une erreur lors de l'execution d'un script sur ORACLE:
    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
    22
    SELECT TRUNC(A.COD_MOI,'MM') COD_DAT,
                                 A.cod_res,
                                 SUM(A.mtt_det) mtt_det,
                                 B.bol_plc,
                                 SUM(B.mtt_obj_det) mtt_obj_det,
                                 B.lib_typ_bai
                            FROM EDE_PRD.F_DET_DETTE_MOIS A
                                 INNER JOIN
                                 EDE_PRD.f_obj_det_mer B
                                    ON (    A.cod_moi = B.cod_moi
                                        AND A.cod_res = B.cod_res
                                        AND A.LIB_TYP_BAI = B.LIB_TYP_BAI)
     
                           WHERE                     
                                A    .LIB_TYP_BAI = 'LOGEMENTS' AND
                                B    .LIB_TYP_BAI = 'LOGEMENTS'
                                 AND A.COD_SOC = 'LMH'
                                 AND A.bol_plc = 1
                                 AND B.bol_plc = 1 
                                 AND B.COD_TYP_SVI ='Contentieux'
                                 AND A.COD_MOI >= '01/01/2018'
                                 GROUP BY A.COD_RES,TRUNC(A.COD_MOI,'MM')


    Merci

  2. #2
    Membre averti
    Bonjour,

    Dans une requête de ce genre, les colonnes de la clause SELECT qui ne sont pas traitées par une fonction de groupe doivent être incluses dans la clause GROUP BY.

    En l'occurrence, la solution la plus simple consiste rajouter les colonnes B.bol_plc et B.lib_typ_bai à la fin de la requête.

  3. #3
    Futur Membre du Club
    Merci ça m'a bien aidé.
    Cependant je rencontre ce problème lorsqu'il y a la syntaxe CASE dans la requête. Et pourtant j'ai bien suivi tes recommandations. Voici le détail:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    SELECT TRUNC(A.COD_MOI,'MM') COD_DAT,
                                 CASE
                                    WHEN A.COD_RES BETWEEN 3700 AND 3705
                                    THEN
                                       'FNDSA'
                                    ELSE
                                       A.COD_SOC
                                 END
                                    COD_SOC,
                                 A.cod_res,
                                 SUM(A.mtt_det) mtt_det,
                                 B.bol_plc,
                                 SUM(B.mtt_obj_det) mtt_obj_det,
                                 B.lib_typ_bai
                            FROM EDE_PRD.F_DET_DETTE_MOIS A
                                 INNER JOIN
                                 EDE_PRD.f_obj_det_mer B
                                    ON (    A.cod_moi = B.cod_moi
                                        AND A.cod_res = B.cod_res
                                        AND A.LIB_TYP_BAI = B.LIB_TYP_BAI)
                           /*A.COD_TYP_SVI = B.COD_TYP_SVI AND*/
     
                           WHERE                      /*A.COD_TYP_SVI = 'Agence'*/
                                A    .LIB_TYP_BAI = 'LOGEMENTS' AND
                                B    .LIB_TYP_BAI = 'LOGEMENTS'
                                 AND A.COD_SOC = 'LMH'
                                 AND A.bol_plc = 1
                                 AND B.bol_plc = 1 
                                 AND B.COD_TYP_SVI ='Contentieux'
                                 AND A.COD_MOI >= '01/01/2018'
                                 GROUP BY A.COD_RES,TRUNC(A.COD_MOI,'MM'), B.bol_plc,B.lib_typ_bai


    Merci d'avance pour le retour

  4. #4
    Modérateur

    De la même manière que tu as placé l'expression TRUNC(A.COD_MOI,'MM') dans la clause GROUP BY, il faut aussi y placer l’expression CASE..END telle qu'elle est énoncée ans la clause SELECT.
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  5. #5
    Futur Membre du Club
    Merci.
    Mon problème a été résolu