Oracle
 sql >> Base de données >  >> RDS >> Oracle

Utilisation d'un alias dans la partie When d'une instruction Case dans Oracle SQL

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 BY clause, 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
);