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.

Était-ce utile?

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
scroll top