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.