2009/8/29 MIGUEL JOSE DE LIMA <[email protected]>

> Pessoal,
> Em alguns produtos da M.S. eu podia usar o resultado de uma expressão na
> clausula WHERE e
> no PostgreSQL eu não consigo, dando erro que o campo não existe!
> Eu pergunto: É possível? Existe alguma referencia que possa ler?
>
>
Miguel,

O Oswaldo respondeu já respondeu que da forma que tu deseja não é possível,
mas posso sugerir algumas alternativas??




> Ex.: SELECT c1, c2, COUNT(id) as qtde FROM tabela WHERE qtde > 1
>        GROUP BY c1, c2 ...;
>        *** (erro qtde - não existe)
>


No primeiro exemplo eu faria o seguinte:

SELECT c1, c2, COUNT(id) as qtde FROM tabela
GROUP BY c1, c2 ...
HAVING COUNT(id) > 1;




> ou
>        SELECT c1,
>                      c2,
>                     (SELECT ... saldoanterior FROM tbsaldo... WHERE ano =
> '2008') AS c3,
>                     CASE c3 ... AS c4 ... FROM tabela;
>         *** Neste caso eu gostaria de testar SE o RESULTADO DE c3 É NULO
>              (pode não existir dados p/ saldo anterior) e criar o campo c4
> com um CASE.
>               ou seja, se c3 IS NULL retorna 0.000 se não retorna c3.
>              ---
>
>
E no segundo exemplo eu utilizaria uma sub-query para fazer o que você
precisa, mais ou menos assim:

SELECT a.*,
              COALESCE(a.c3, 0) AS c4
FROM (
   SELECT c1,
                 c2,
                 (SELECT ... saldoanterior FROM tbsaldo... WHERE ano =
'2008') AS c3
       FROM tabela
) AS a ;

Espero ter ajudado.

Cordialmente,

-- 
Fabrízio de Royes Mello
>> Blog sobre TI: http://fabriziomello.blogspot.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a