Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucas Cardial

Múltiplo select com Group BY

Recommended Posts

Possuo em uma tabela nomeada fluxoCaixa as seguintes colunas: categoria, valor, data, type,conta;

 

Categoria = Categoria do registro de gasto, como: "Água, Luz, Telefone", etc.

Valor = Guarda o valor da operação.

data= Data da operação;

Type= Guarda o tipo de operação. Se o tipo for = 1, quer dizer que esta operação foi uma entrada de valor, caso o tipo seja 2, então a operação foi uma retirada de valor.

Conta = Informa qual conta sofrerá a operação, por exemplo:

 

categoria valor data type conta Prestação de Serviços 1054.50 04/03/2014 1 Caixa 01 Troca de óleo 50.75 20/03/2014 2 Caixa 01 Prestação de Serviços 1054.50 04/03/2014 1 Caixa 02 Troca de óleo 50.75 20/03/2014 2 Caixa 02 Prestação de Serviços 1054.50 04/03/2014 1 Caixa 03 Troca de óleo 50.75 20/03/2014 2 Caixa 03

 

Minha questão é:

Preciso efetuar um select, que me retorne o seguinte resultado:

Conta Entradas Saidas Caixa 01 1054.50 50.75 Caixa 02 1054.50 50.75 Caixa 03 1054.50 50.75

 

A princípio, sei que se eu usar esta clausula, eu obtenho a soma total de cada `conta`:

select `categoria` , sum(valor) as total from `fluxoCaixa` group by `conta`

Obtendo isto:

Conta Total Caixa 01 1105.25 Caixa 02 1105.25 Caixa 03 1105.25

Então pensei na seguinte sintaxe, porém não está correta, vou mostrá-la na esperança que contribua em algo.

select `conta`, (select sum(val) from `fluxoCaixa` group by `conta` WHERE `type` = 1) as Entrada, (select sum(val) from `fluxoCaixa` group by `conta` WHERE `type` = 2) as Saida

Porém, como esperado, esta sintaxe está errada.


select `categoria` , (select sum(valor) from `fluxoCaixa` where `type`=1) as Entradas, (select sum(valor) from `fluxoCaixa` where `type`=2) as Saidas from `fluxoCaixa` group by `categoria`

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.