Tudo jóia ? Não, colega, ABSOLUTAMENTE NÃO ROLA de vc usar um ALIAS de outra 
coluna num dado SELECT : dá um look no manual de "SQL REFERENCE" que no 
capítulo do SELECT vc vai ver CLARAMENTE que num lista a ser pesquisada num 
SELECT só vale OU colunas de tabelas citadas no FROM, OU colunas baseadas em 
função, OU pseudocolunas (como USER, SYSDATE, etc) OU colunas definidas numa 
sub-query OU colunas definidas num CTE/WITH CLAUSE....
 Veja só o exemplo :
 
SYSTEM@O11GR2>create table TAB_TESTE (campo1 number, campo2 number, campo3 
number);

Tabela criada.

SYSTEM@O11GR2>insert into TAB_TESTE values (1,2,3);

1 linha criada.

SYSTEM@O11GR2>insert into TAB_TESTE values (4,5,6);

1 linha criada.

SYSTEM@O11GR2>SELECT CAMPO1                A,
  2                  CAMPO2                B,
  3                  CAMPO1 + CAMPO2       C,
  4                  C * 3.14              D
  5  FROM TAB_TESTE;
  
  
                C * 3.14                                       D
                *
ERRO na linha 4:
ORA-00904: "C": identificador inválido

==> Óbvio Ululante : como dito,  o parser encontrou uma referência a um tal de 
C na linha 4 da minha query, e esse C ** não ** está definido nas tabelas 
indicadas no FROM, ** não ** é uma função, ** não ** é uma pseudocoluna, Não é 
parte duma CTE, então ele Não Sabe o que é....
 O que vc TEM que fazer é definir esse C numa dessas opções que ele permite 
reuso, é isso...
 
 ==> Exemplo definindo C numa subquery :
 
SYSTEM@O11GR2>SELECT CAMPO1  A,
  2         CAMPO2           B,
  3                          C,
  4         C * 3.14         D
  5    FROM (
  6          SELECT CAMPO1, CAMPO2, CAMPO1+CAMPO2 as C
  7            FROM TAB_TESTE
  8           );

         A          B          C          D
---------- ---------- ---------- ----------
         1          2          3       9,42
         4          5          9      28,26

2 linhas selecionadas.

SYSTEM@O11GR2>SYSTEM@O11GR2>

==> okdoc ??? 

[]s

  Chiappa

Responder a