2010-10-14 4 views
1

J'ai cette requête qui montre l'erreur ORA-00979:not a GROUP BY expression.Problème SQL Group

Je ne suis pas un pro de sql donc pourriez-vous me donner un indice ce qui ne va pas?

SELECT * 
    FROM (SELECT a.*, ROWNUM r___ 
      FROM (SELECT DISTINCT "SMTAPP"."XF_MASTER"."ID" AS "XfMasterEntityId", 
           "SMTAPP"."XP_MASTER_DETAIL"."WIFENAME" AS "XpMasterDetailEntityWifename", 
           "SMTAPP"."XP_MASTER_DETAIL"."COUNT" AS "XpMasterDetailEntityCount", 
           MAX ("SMTAPP"."XP_MASTER_DETAIL"."COUNT") AS "XpMasterDetailEntityCountMax" 
          FROM ("SMTAPP"."XF_MASTER" LEFT JOIN "SMTAPP"."XP_MASTER_DETAIL" 
           ON "SMTAPP"."XF_MASTER"."ID" = "SMTAPP"."XP_MASTER_DETAIL"."XF_MASTER_ID") 
         GROUP BY "SMTAPP"."XP_MASTER_DETAIL"."COUNT" 
         ORDER BY "SMTAPP"."XF_MASTER"."ID" ASC) a 
     WHERE ROWNUM < '11') 
WHERE r___ >= '1' 

Répondre

2

Essayez d'ajouter d'autres colonnes de SELECT en GROUP BY: ID et WIFENAME

3

Lorsque vous utilisez GROUP BY, toutes les colonnes que vous sélectionnez doivent soit être agrégées en utilisant une fonction d'agrégation ou être dans la clause GROUP BY. Sinon, vous auriez une liste d'éléments pour cette colonne, qui n'est pas une seule valeur.

Par conséquent, essayez ceci (remplacer l'actuel GROUP BY avec celui-ci):

GROUP BY "SMTAPP"."XF_MASTER"."ID", 
    "SMTAPP"."XP_MASTER_DETAIL"."WIFENAME", 
    "SMTAPP"."XP_MASTER_DETAIL"."COUNT" 
1

Dans la plupart requête interne

SELECT DISTINCT 
"SMTAPP"."XF_MASTER"."ID" AS "XfMasterEntityId", 
"SMTAPP"."XP_MASTER_DETAIL"."WIFENAME" AS "XpMasterDetailEntityWifename", 
"SMTAPP"."XP_MASTER_DETAIL"."COUNT" AS "XpMasterDetailEntityCount", 
MAX ("SMTAPP"."XP_MASTER_DETAIL"."COUNT") AS "XpMasterDetailEntityCountMax" 

FROM ("SMTAPP"."XF_MASTER" LEFT JOIN "SMTAPP"."XP_MASTER_DETAIL" 
ON "SMTAPP"."XF_MASTER"."ID" = "SMTAPP"."XP_MASTER_DETAIL"."XF_MASTER_ID") 
GROUP BY "SMTAPP"."XP_MASTER_DETAIL"."COUNT" 
ORDER BY "SMTAPP"."XF_MASTER"."ID" ASC 

vous avez des colonnes dans le SELECT-à-dire

"SMTAPP"."XF_MASTER"."ID" AS "XfMasterEntityId", 

ET

"SMTAPP"."XP_MASTER_DETAIL"."WIFENAME" AS "XpMasterDetailEntityWifename" 

qui ne font PAS partie du GROUP BY "SMTAPP"."XP_MASTER_DETAIL"."COUNT" et qui n'est pas autorisé.

Vous ne pouvez avoir des colonnes dans le SELECT qui font partie du groupe ou par agrégés en utilisant les fonctions d'agrégation comme MAX/AVG etc

1

Qu'est-ce que @eumiro signifiait était

SELECT * 
     FROM (SELECT a.*, ROWNUM r___ 
       FROM (SELECT DISTINCT "SMTAPP"."XF_MASTER"."ID" AS "XfMasterEntityId", 
            "SMTAPP"."XP_MASTER_DETAIL"."WIFENAME" AS "XpMasterDetailEntityWifename", 
            "SMTAPP"."XP_MASTER_DETAIL"."COUNT" AS "XpMasterDetailEntityCount", 
            MAX ("SMTAPP"."XP_MASTER_DETAIL"."COUNT") AS "XpMasterDetailEntityCountMax" 
           FROM ("SMTAPP"."XF_MASTER" LEFT JOIN "SMTAPP"."XP_MASTER_DETAIL" 
            ON "SMTAPP"."XF_MASTER"."ID" = "SMTAPP"."XP_MASTER_DETAIL"."XF_MASTER_ID") 
          GROUP BY "SMTAPP"."XF_MASTER"."ID", "SMTAPP"."XP_MASTER_DETAIL"."WIFENAME", "SMTAPP"."XP_MASTER_DETAIL"."COUNT" 
          ORDER BY "SMTAPP"."XF_MASTER"."ID" ASC) a 
      WHERE ROWNUM < '11') 
    WHERE r___ >= '1'