Non, vous ne pouvez pas faire référence à l'alias ailleurs dans le même niveau de select , autre que dans le order by clause, en raison du moment où Oracle l'attribue en interne.
À partir de la documentation (soulignement ajouté) :
Vous pouvez utiliser un alias de colonne, c_alias, pour étiqueter l'expression immédiatement précédente dans la liste de sélection afin que la colonne soit affichée avec un nouvel en-tête. L'alias renomme effectivement l'élément de liste de sélection pour la durée de la requête. L'alias peut être utilisé dans le
ORDER BYclause, mais pas les autres clauses de la requête .
Vous auriez besoin d'utiliser une requête interne, quelque chose comme :
select "Id",
case "Id"
when 3
then 'foo'
else 'bar'
end AS "Results"
from (
select TABLEA.SomeIDNumber AS "Id",
from TABLEA
);