Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-00904 Ungültiger Bezeichner auf Dekodierungsalias

Aus der Dokumentation (Hervorhebung hinzugefügt):

Sie können einen Spaltenalias verwenden, c_alias , um den unmittelbar vorangehenden Ausdruck in der Auswahlliste so zu kennzeichnen, dass die Spalte mit einer neuen Überschrift angezeigt wird. Der Alias ​​benennt das Auswahllistenelement effektiv für die Dauer der Abfrage um. Der Alias ​​kann im ORDER BY verwendet werden -Klausel, aber keine anderen Klauseln in der Abfrage.

Sie können also nicht auf den Alias ​​im where verweisen Klausel, wo Sie im Moment haben:

...
AND (account_amt NOT BETWEEN ...
...

Der Alias ​​ist zu diesem Zeitpunkt nicht gültig, daher wird in einer der Tabellen nach einer Spalte mit diesem Namen gesucht und keine gefunden. Es ist in Ordnung in der order by obwohl.

Sie müssen entweder den Alias ​​durch das wiederholte decode ersetzen -Anweisung oder verwenden Sie möglicherweise eine Unterabfrage und verweisen Sie dann in einem where auf den Alias -Klausel in einer äußeren Abfrage, aber das könnte weniger effizient sein, je nachdem, wie selektiv Ihre anderen Bedingungen sind.