Ajuda em consulta

2 respostas
elugo

Bom dia, pessoal estou com um problema que não consigo encontrar a solução!
Na verdade é uma query que nao estou conseguindo elaborar…

Tenho uma tabela de TB_CONTA. Nesta tabela, tenho um campo CT_REFERENCIA
este campo guarda se a conta é uma receita ou uma despesa “R” - Receita; “P” - Despesa

Meu cenário é o seguinte: Preciso trazer a soma das receitas e despesas agrupadas por mês
exemplo:

CONTA 1: dataPagamento: 26/01/2010; valor: 56,00; referencia: "P"
CONTA 2: dataPagamento: 27/01/2010; valor: 120,00; referencia: "R"
CONTA 3: dataPagamento: 29/01/2010; valor: 200,00; referencia: "R"
CONTA 4: dataPagamento: 23/01/2010; valor: 300,00; referencia: "P"
CONTA 5: dataPagamento: 09/02/2010; valor: 70,00; referencia: "R"
CONTA 6: dataPagamento: 23/02/2010; valor: 60,00; referencia: “P”

o resultado deveria sair assim:

Mês = Janeiro
Receita = 220,00
Despesa = 356,00

Mês = Fevereiro
Receita = 70,00
Despesa = 60,00

Alguém poderia me ajudar fazer está consulta?
agradeço

2 Respostas

thiago.correa

você consegue isso, manipulando o seu campo data para retorar somente o mês! Mas mesmo assim o resultado seria dado em linhas, e não da maneira que você deseja

Algo do tipo

Mês | Valor | CT_REFERENCIA

1 | 220,00 | P
1 | 356,00 | R
2 | 70,00 | R
1 | 60,00 | P

Eu não sei como está organizado essa tabela, mas o sql seria algo do tipo, imaginando que você usa o BD oracle

select to_char(dt_pagamento, ‘MM’) mes, sum(valor) valor_total, ct_referencia from TB_CONTA group by mes, valor_total, ct_referencia

Não estou bem lembrado quanto ao formato do mês, mas segue essa linha, caso seu BD não seja oracle, consulte a documentação do mesmo!

mrrbigu

No postgresql fica assim:

SELECT DATE_PART(‘MONTH’,“dataPagamento”) AS mes,sum(case when referencia=‘R’ then valor else 0 end) as receita, sum(case when referencia=‘P’ then valor else 0 end) as despesa FROM tb_conta
group by mes;

só que no caso o mês fica em número, ou seja 1 e não “janeiro”.

Criado 2 de março de 2010
Ultima resposta 2 de mar. de 2010
Respostas 2
Participantes 3