Problème requète avec Group By [Résolu]

cs_xxLoloxx 9 Messages postés dimanche 3 février 2008Date d'inscription 10 juillet 2012 Dernière intervention - 11 avril 2012 à 18:44 - Dernière réponse : alpyard 1 Messages postés mercredi 15 avril 2009Date d'inscription 12 avril 2012 Dernière intervention
- 12 avril 2012 à 07:51
Bonsoir,

Je suis actuellement bloqué sur une requête que je vous ai simplifié pour les besoins de compréhension.
En oracle, il est impossible d'effectuer un group by sur des alias.

=> Requete de base :
SELECT dro_id as dro_id2, SUM(10+4) AS mntht FROM droitayantdroit
GROUP BY dro_id2
;

=> Rendu
Erreur sur l'alias


------- Solution de contournement
SELECT dro_id2, mntht
FROM
(SELECT dro_id as dro_id2, SUM(10+4) AS mntht FROM droitayantdroit)
GROUP BY dro_id2, mntht
;

=> ORA-00937 : la fonction de groupe ne porte pas sur un groupe simple


Pourtant cette version marche
select dro_id2, mntht
from
(select sysdate as dro_id2, sum(10+4) as mntht from droitayantdroit)
group by dro_id2, mntht;


J'en déduis que c'est dès lors que j'appelle une colonne de ma table droitayantdroit que l'erreur m'est remontée.

Avez-vous une idée du pourquoi ?

En vous remerciant
Afficher la suite 

1 réponse

Répondre au sujet
alpyard 1 Messages postés mercredi 15 avril 2009Date d'inscription 12 avril 2012 Dernière intervention - 12 avril 2012 à 07:51
+3
Utile
SELECT dro_id as dro_id2, SUM(10+4) AS mntht FROM droitayantdroit
GROUP BY dro_id

devrait fonctionner
on ne groupe jamais avec l'alias, c'est curieux mais c'est comme ça.


par exemple

il faut écrire
SELECT (case when dro_id > 0 then 1 else 0 end) as dro_id2, SUM(10+4) AS mntht FROM droitayantdroit
GROUP BY (case when dro_id > 0 then 1 else 0 end)

pour que le group by fonctionne
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de alpyard

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.