Z dokumentace (zvýraznění přidáno):
Můžete použít alias sloupce
c_alias
, k označení bezprostředně předcházejícího výrazu ve výběrovém seznamu, aby se sloupec zobrazil s novým záhlavím. Alias efektivně přejmenuje položku seznamu výběru po dobu trvání dotazu. Alias lze použít vORDER BY
klauzule, ale ne jiné klauzule v dotazu.
Takže nemůžete odkazovat na alias v where
klauzule, kde v tuto chvíli máte:
...
AND (account_amt NOT BETWEEN ...
...
Alias v tomto okamžiku není platný, takže hledá sloupec s tímto názvem v jedné z tabulek a žádný nenajde. V order by
je to v pořádku ačkoli.
Buď musíte nahradit alias opakovaným decode
nebo případně použijte poddotaz a poté odkazujte na alias v where
klauzule ve vnějším dotazu, ale to může být méně účinné v závislosti na tom, jak selektivní jsou vaše ostatní podmínky.