De la documentación (énfasis agregado):
Puede usar un alias de columna, c_alias
, para etiquetar la expresión inmediatamente anterior en la lista de selección para que la columna se muestre con un nuevo encabezado. El alias cambia efectivamente el nombre del elemento de la lista de selección durante la consulta. El alias se puede utilizar en el ORDER BY
cláusula, pero no otras cláusulas en la consulta.
Por lo tanto, no puede hacer referencia al alias en el where
cláusula, donde en este momento usted tiene:
...
AND (account_amt NOT BETWEEN ...
...
El alias no es válido en ese momento, por lo que está buscando una columna con ese nombre en una de las tablas y no la encuentra. Está bien en el order by
aunque.
Debe reemplazar el alias con el decode
repetido declaración, o posiblemente use una subconsulta y luego haga referencia al alias en un where
cláusula en una consulta externa, pero eso podría terminar siendo menos eficiente dependiendo de qué tan selectivas sean sus otras condiciones.