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