cs_xxLoloxx
Messages postés9Date d'inscriptiondimanche 3 février 2008StatutMembreDernière intervention10 juillet 2012
-
11 avril 2012 à 18:44
alpyard
Messages postés1Date d'inscriptionmercredi 15 avril 2009StatutMembreDernière intervention12 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:
Ora-00937: la fonction de groupe ne porte pas sur un groupe simple
La fonction de groupe ne porte pas sur un groupe simple - Meilleures réponses
alpyard
Messages postés1Date d'inscriptionmercredi 15 avril 2009StatutMembreDernière intervention12 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)