Ich kann diese Abfrage Arbeit mit SUM-Funktion machen
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.
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