Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Usando alias na parte When de uma instrução Case no Oracle SQL


Não, você não pode fazer referência ao alias em outro lugar no mesmo nível de select , exceto no order by cláusula, por causa de quando o Oracle a atribui internamente.

Da documentação (grifo nosso):

Você pode usar um alias de coluna, c_alias, para rotular a expressão imediatamente anterior na lista de seleção para que a coluna seja exibida com um novo título. O alias renomeia efetivamente o item da lista de seleção durante a consulta. O alias pode ser usado noORDER BY cláusula, mas não outras cláusulas na consulta .

Você precisaria usar uma consulta interna, algo como:
select "Id",
    case "Id"
        when 3
        then 'foo'
        else 'bar'
    end AS "Results"
from (
    select TABLEA.SomeIDNumber AS "Id",
    from TABLEA
);