Obrigado pessoal, como sempre muito prestativos.
Emerson Sanches Analista de Sistemas Em ter, 4 de jun de 2019 às 20:15, jlchia...@yahoo.com.br [oracle_br] < oracle_br@yahoogrupos.com.br> escreveu: > > > 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 > >