Verwenden Sie ein berechnetes Feld in der where-Klausel
Frage
Gibt es eine Möglichkeit, ein berechnetes Feld in der where
Klausel zu verwenden?
Ich mag wie etwas tun
SELECT a, b, a+b as TOTAL FROM (
select 7 as a, 8 as b FROM DUAL
UNION ALL
select 8 as a, 8 as b FROM DUAL
UNION ALL
select 0 as a, 0 as b FROM DUAL
)
WHERE TOTAL <> 0
;
, aber ich erhalte ORA-00904: "TOTAL": invalid identifier
.
Also ich verwende
SELECT a, b, a+b as TOTAL FROM (
select 7 as a, 8 as b FROM DUAL
UNION ALL
select 8 as a, 8 as b FROM DUAL
UNION ALL
select 0 as a, 0 as b FROM DUAL
)
WHERE a+b <> 0
;
Lösung
Logischer , die select
Klausel ist eines der letzten Teile einer Abfrage ausgewertet, so dass die Aliase und abgeleiteten Spalte nicht verfügbar sind. (Außer auf order by
, die logisch geschieht letzte.)
eine abgeleitete Tabelle zu verwenden ist weg, um diesen:
select *
from (SELECT a, b, a+b as TOTAL FROM (
select 7 as a, 8 as b FROM DUAL
UNION ALL
select 8 as a, 8 as b FROM DUAL
UNION ALL
select 0 as a, 0 as b FROM DUAL)
)
WHERE TOTAL <> 0
;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow