Frage

Diese Abfrage gibt eine Fehlermeldung:

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

Fehler: ORA-00904: "TYPE": ungültige Kennung

Wenn ich es mit group by ep ausführen, wird die Fehlermeldung wird:

ORA-00979: keine GROUP BY-Ausdruck

Die ganze Abfrage funktioniert OK, wenn ich die Linien sum(b2b_d+b2b_t-b2b_i) as sales und group by ... entfernen, so sollte das Problem zu SUM und GROUP BY-Funktionen beziehen. Wie kann ich diese Arbeit machen? Vielen Dank im Voraus für Ihre Hilfe.

War es hilfreich?

Lösung

Leider ist SQL nicht zulassen, dass Sie die Spaltenaliasnamen in der GROUP BY-Klausel verwenden, so dass Sie entweder den gesamten Fall wiederholen müssen es wie folgt aus:

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

oder verwenden Sie eine in-line Ansicht wie folgt aus:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top