Uit de documentatie (nadruk toegevoegd):
U kunt een kolomalias gebruiken,
c_alias
, om de direct voorafgaande uitdrukking in de selectielijst te labelen, zodat de kolom wordt weergegeven met een nieuwe kop. De alias hernoemt het item uit de selectielijst effectief voor de duur van de query. De alias kan worden gebruikt in deORDER BY
clausule, maar geen andere clausules in de zoekopdracht.
U kunt dus niet verwijzen naar de alias in de where
clausule, waar u op dit moment:
...
AND (account_amt NOT BETWEEN ...
...
De alias is op dat moment niet geldig, dus het zoekt naar een kolom met die naam in een van de tabellen en vindt er geen. Het is prima in de order by
hoewel.
Je moet ofwel de alias vervangen door de herhaalde decode
statement, of gebruik eventueel een subquery en verwijs vervolgens naar de alias in een where
clausule in een buitenste zoekopdracht, maar dat kan uiteindelijk minder efficiënt zijn, afhankelijk van hoe selectief uw andere voorwaarden zijn.