On Thu, Dec 18, 2014 at 8:08 PM, Danilo Silva <[email protected]>
wrote:
>
> Em 18 de dezembro de 2014 15:12, Matheus de Oliveira <
> [email protected]> escreveu:
>>
>> SELECT
>>         count(CASE WHEN (orv_codemp = 1) AND (orv_codfilial = 1) END) AS
>> totorv,
>>         count(CASE WHEN (orv_codemp = 1) AND (orv_codfilial = 1) AND
>> (orv_codfilial = 1) END) AS total,
>>         ... -- adapte os demais
>>     FROM orcamento_venda
>>     WHERE (orv_codemp = 1) AND (orv_codfilial = 1) AND ... /* outros
>> filtros que casam com todos */
>>
>
>
> ​Valeu Matheus pela dica, apenas troquei o count pelo sum.
>

Ah... Realmente cometi um erro na sintaxe, esqueci de adicionar o "THEN
<expressão>":

    SELECT
        count(CASE WHEN (orv_codemp = 1) AND (orv_codfilial = 1) THEN 1
END) AS totorv,

Veja que se trocar o "count" pelo "sum" acima vai dar o mesmo resultado em
*quase* todos os casos, a exceção é quando não tem nenhum registro que casa
com a condição, nesse caso o "sum" vai retornar NULL enquanto o "count" vai
retornar 0 (zero). Veja qual é melhor para o seu caso, de fato o "sum" não
seria equivalente à sua consulta original.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a