Je ne peux pas faire ce travail de recherche avec la fonction SOMME
Question
Cette requête donne une erreur:
select ep,
case
when ob is null and b2b_ob is null then 'a'
when ob is not null or b2b_ob is not null then 'b'
else null
end as type,
sum(b2b_d + b2b_t - b2b_i) as sales
from table
where ...
group by ep, type
Erreur: ORA-00904: "TYPE": invalide identifiant
Quand je lance avec group by ep
, le message d'erreur devient:
ORA-00979: pas GROUP BY expression
La requête tout fonctionne bien si je retire les lignes sum(b2b_d+b2b_t-b2b_i) as sales
et group by ...
, de sorte que le problème devrait être lié aux fonctions SUM et GROUP BY. Comment puis-je faire ce travail? Merci d'avance pour votre aide.
La solution
Malheureusement, SQL ne vous permet pas d'utiliser les alias de colonne dans la clause GROUP BY, vous avez soit de répéter toute l'affaire là comme ceci:
select ep,
case
when ob is null and b2b_ob is null then 'a'
when ob is not null or b2b_ob is not null then 'b'
else null
end as type,
sum(b2b_d + b2b_t - b2b_i) as sales
from table
where ...
group by ep,
case
when ob is null and b2b_ob is null then 'a'
when ob is not null or b2b_ob is not null then 'b'
else null
end
ou utiliser une vue en ligne comme ceci:
select ep,
type,
sum(b2b_d + b2b_t - b2b_i) as sales
from
( select ep,
case
when ob is null and b2b_ob is null then 'a'
when ob is not null or b2b_ob is not null then 'b'
else null
end as type,
b2b_d,
b2b_t,
b2b_i
from table
where ...
)
group by ep, type
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow