Da documentação (grifo nosso):
Você pode usar um alias de coluna,c_alias
, para rotular a expressão imediatamente anterior na lista de seleção para que a coluna seja exibida com um novo título. O alias renomeia efetivamente o item da lista de seleção durante a consulta. O alias pode ser usado noORDER BY
cláusula, mas não outras cláusulas na consulta.
Portanto, você não pode se referir ao alias no
where
cláusula, onde no momento você tem:...
AND (account_amt NOT BETWEEN ...
...
O alias não é válido nesse ponto, então está procurando uma coluna com esse nome em uma das tabelas e não encontra. Está tudo bem no
order by
no entanto. Você precisa substituir o alias pelo
decode
repetido declaração, ou possivelmente usar uma subconsulta e, em seguida, referir-se ao alias em um where
cláusula em uma consulta externa, mas isso pode acabar sendo menos eficiente dependendo de quão seletivas são suas outras condições.