Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Carregando comentários...