Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-00904 nieprawidłowy identyfikator w aliasie dekodowania

Z dokumentacji (podkreślenie dodane):

Możesz użyć aliasu kolumny, c_alias , aby nadać nazwę bezpośrednio poprzedzającemu wyrażeniu na liście wyboru, tak aby kolumna była wyświetlana z nowym nagłówkiem. Alias ​​skutecznie zmienia nazwę elementu listy wyboru na czas trwania zapytania. Alias ​​może być używany w ORDER BY klauzula, ale nie inne klauzule w zapytaniu.

Więc nie możesz odwoływać się do aliasu w where klauzula, gdzie w tej chwili masz:

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

Alias ​​nie jest prawidłowy w tym momencie, więc szuka kolumny o tej nazwie w jednej z tabel i nie znajduje żadnej. Jest w porządku w order by chociaż.

Musisz albo zastąpić alias powtórzonym decode lub ewentualnie użyj podzapytania, a następnie odwołaj się do aliasu w where klauzula w zewnętrznym zapytaniu, ale może to być mniej wydajne w zależności od tego, jak selektywne są Twoje inne warunki.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usunięcie połączonego użytkownika ze schematu bazy danych Oracle 10g

  2. Wstawianie wielu wierszy do Oracle

  3. Jak wyodrębnić grupę z wyrażenia regularnego w Oracle?

  4. Powolna migracja do chmury

  5. Znajdowanie i usuwanie znaków spoza zestawu ASCII z Oracle Varchar2