sql >> Databasteknik >  >> RDS >> Oracle

ORA-00904 ogiltig identifierare på avkodningsalias

Från dokumentationen (min kursivering):

Du kan använda ett kolumnalias, c_alias , för att märka det omedelbart föregående uttrycket i urvalslistan så att kolumnen visas med en ny rubrik. Aliaset byter effektivt namn på urvalslistobjektet under hela frågan. Aliaset kan användas i ORDER BY sats, men inte andra satser i frågan.

Så du kan inte referera till aliaset i where klausul, där du för tillfället har:

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

Aliaset är inte giltigt vid den tidpunkten, så det letar efter en kolumn med det namnet i en av tabellerna och hittar ingen. Det är bra i ordning efter dock.

Du måste antingen ersätta aliaset med den upprepade avkodningen uttalande, eller eventuellt använda en underfråga och sedan hänvisa till aliaset i en where klausul i en yttre fråga, men det kan sluta bli mindre effektivt beroende på hur selektiva dina andra villkor är.



  1. Hur man installerar Lighttpd med PHP, MariaDB och PhpMyAdmin i Ubuntu

  2. Hur man sammanfogar två tabeller med hjälp av en kommaseparerad lista i sammanfogningsfältet

  3. Enkelt sätt att välja höger kolumn som primärnyckel för en given tabell

  4. alternativ till listagg i Oracle?