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
> 
>

Responder a