Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-00904 identificador inválido no alias de decodificação


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.