Fabrízio, Bom Dia! Os seus exemplos foram de grande valia. Mas, aproveitando a sua experiência, gostaria de perguntar mais uma coisa (se possível a resposta.): A clausula HAVING tem custo significativo em relação a performace? conforme o número de registros lidos!
Muito Obrigado. 2009/8/29 Fabrízio de Royes Mello <[email protected]> > 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 > >
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
