-----Original Message----- From: Osvaldo Kussama Sent: Thursday, September 13, 2012 12:57 AM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Soma de coluna com where diferentes
Em 12/09/12, Eduardo Almeida<[email protected]> escreveu: >>> Veja CASE em >>> http://www.postgresql.org/docs/9.1/static/functions-conditional.html > > Jean, mas CASE seria para retornar um valor quando uma condição for > satisfeita ... realmente não vi como fazer isso usando CASE .. mas > obrigado > > > > > >>________________________________ >> De: Eduardo Almeida <[email protected]> >>Para: Comunidade PostgreSQL Brasileira >><[email protected]> >>Enviadas: Quarta-feira, 12 de Setembro de 2012 23:28 >>Assunto: [pgbr-geral] Soma de coluna com where diferentes >> >>Olá senhores, alguma alma caridosa poderia me ajudar a resolver essa >>questão? Não precisa ser a solução, pode ser algo para leitura. Já quebrei >>cabeça aqui e não consigo chegar numa solução. >> >>Preciso somar todos os valores de uma coluna em circunstâncias diferentes >>na >>mesma cláusula SQL. Para retratar melhor minha necessidade, vou esboçar a >>soma abaixo através de duas cláusulas, vamos lá >> >> SELECT SUM(total) as receitas_consolidadas >> FROM tbl_financeiro_fluxo_de_caixa >> WHERE id_conta = ? AND tipo_de_operacao = 'C' AND situacao = >>'Recebido' AND date_part('month', data_do_recebimento) = 1 >> group by total, data_do_recebimento; >> >> SELECT SUM(total) as despesas_liquidadas >> FROM tbl_financeiro_fluxo_de_caixa >> WHERE id_conta = ? AND tipo_de_operacao = 'D' AND situacao = >> 'Pago' >>AND date_part('month', data_do_pagamento) = 1 >> group by total, data_do_pagamento; >> >>Eu gostaria de otimizar isso e colocar tudo numa só cláusula. >> >>Obrigado >> >>Eduardo Almeida - Engenharia de Software >>[email protected] - 27 3361-2050 / 27 9839 3755 >> >>_______________________________________________ >>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 > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > >Tente algo do tipo: >SELECT >SUM(CASE (id_conta = ? AND tipo_de_operacao = 'C' AND situacao = >'Recebido' AND date_part('month', data_do_recebimento) = 1) THEN total >ELSE 0 ) as receitas_consolidadas, >SUM(CAES(id_conta = ? AND tipo_de_operacao = 'D' AND situacao = 'Pago' >AND date_part('month', data_do_pagamento) = 1) THEN total else 0) as >despesas_liquidadas >FROM tbl_financeiro_fluxo_de_caixa; >Osvaldo >_______________________________________________ >pgbr-geral mailing list >[email protected] >https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Muito obrigado Osvaldo, consegui seguindo sua dica, do Jean e até mesmo do Fábio. SELECT SUM( CASE WHEN date_part('month', data_do_recebimento) = 7 THEN total ELSE 0 END) AS receitas_consolidadas, SUM( CASE WHEN date_part('month', data_do_pagamento) = 7 THEN total ELSE 0 END) AS despesas_liquidadas FROM tbl_financeiro_fluxo_de_caixa WHERE id_conta = ? AND tipo_de_operacao IN ('C', 'D') AND situacao IN ( 'Recebido', 'Pago'); Obrigado à todos Eduardo Almeida - Engenharia de Software [email protected] - 27 3361-2050 / 27 9839 3755 _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
