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