Problème requète avec Group By

Résolu
cs_xxLoloxx Messages postés 9 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 10 juillet 2012 - 11 avril 2012 à 18:44
alpyard Messages postés 1 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 12 avril 2012 - 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
A voir également:

1 réponse

alpyard Messages postés 1 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 12 avril 2012
12 avril 2012 à 07:51
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
3
Rejoignez-nous