sql >> Database teknologi >  >> RDS >> Oracle

ORA-00904 ugyldig identifikator på afkodningsalias

Fra dokumentationen (fremhævet):

Du kan bruge et kolonnealias, c_alias , for at mærke det umiddelbart foregående udtryk i valglisten, så kolonnen vises med en ny overskrift. Aliaset omdøber i virkeligheden valglisteelementet i hele forespørgslens varighed. Aliaset kan bruges i ORDER BY klausul, men ikke andre klausuler i forespørgslen.

Så du kan ikke henvise til aliaset i where klausul, hvor du i øjeblikket har:

...
AND (account_amt NOT BETWEEN ...
...

Aliaset er ikke gyldigt på det tidspunkt, så det leder efter en kolonne med det navn i en af ​​tabellerne og finder ikke en. Det er fint i orden efter dog.

Du skal enten erstatte aliaset med den gentagne decode sætning, eller brug eventuelt en underforespørgsel og henvis derefter til aliaset i en hvor klausul i en ydre forespørgsel, men det kan ende med at blive mindre effektivt afhængigt af hvor selektive dine andre forhold er.



  1. Hvordan tilføjer man et specifikt antal tomme rækker i sqlite?

  2. Oprettelse af en database dump for specifikke tabeller og poster Postgres

  3. SQLite REPLACE-sætning

  4. TRUNC(dato) Funktion i Oracle