IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

SQL Oracle Discussion :

ERREUR: ORA-00979: n'est pas une expression GROUP BY


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut 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
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2012
    Messages : 127
    Points : 339
    Points
    339
    Par défaut
    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
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    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
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    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.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Merci.
    Mon problème a été résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. N'est pas une expression GROUP BY
    Par amine381 dans le forum SQL
    Réponses: 3
    Dernier message: 25/03/2013, 11h56
  2. ORA-00979: N'est pas une expression GROUP BY
    Par Jinkas dans le forum SQL
    Réponses: 23
    Dernier message: 21/03/2012, 09h46
  3. Erreur "eclipse.exe n'est pas une application win32 valide"
    Par Lolitaaa dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 18/09/2011, 14h19
  4. ORA-00979: N'est pas une expression GROUP BY
    Par chakibtag dans le forum SQL
    Réponses: 2
    Dernier message: 09/07/2008, 10h22
  5. ORA-00979: N'est pas une expression GROUP BY
    Par NiGHtyWolf dans le forum Oracle
    Réponses: 3
    Dernier message: 10/05/2007, 19h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo