sql >> Base de Datos >  >> RDS >> Oracle

ORA-00904 identificador no válido en alias de decodificación

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.