Osvaldo, valeu pela ajuda. Ainda não é bem isso mas já é meio caminho andado.
Falta a parte de subtrair o que for saida do que for entrada. Mas já quebrou um galhão. Vlw. Att, Elias. Em 2 de agosto de 2010 15:30, Osvaldo Kussama <osvaldo.kuss...@gmail.com>escreveu: > Em 2 de agosto de 2010 15:18, Osvaldo Kussama > <osvaldo.kuss...@gmail.com> escreveu: > > Em 2 de agosto de 2010 14:48, .:eliastxt:. ... <elias...@gmail.com> > escreveu: > >> Boa tarde pessoal, > >> > >> Se alguém puder me ajudar com uma sql. > >> > >> Tabelas: > >> item(id_item, quantidade, valor, dt_hora, id_saida, id_entrada, > id_material) > >> material(id_material, descricao, observacao) > >> saida(id_saida, id_ordemservico) > >> entrada(id_entrada, id_empenho) > >> > >> Preciso fazer uma consulta da seguinte forma: > >> > >> Por exemplo: Selecionar o saldo e o quantidade de materiais para o mês > 07 de > >> 2010. > >> > >> select > >> m.descricao, > >> sum(i.quantidade) as quantidade, > >> sum(i.valor) as valor > >> from > >> chamado.item i, chamado.material m > >> where > >> m.id_material = i.id_material > >> and > >> i.id_entrada is not null > >> and > >> i.dt_hora BETWEEN '2010-07-01' and '2010-07-31' > >> group by > >> m.descricao; > >> > >> Minha consulta retorna o seguinte: > >> Descrição do material, quantidade do mês 07, valor do mês 07 > >> > >> Preciso adaptar a consulta para retornar o seguinte: > >> Descrição do material, quantidade até mês 07, saldo até mês 07, > quantidade > >> do mês 07, saldo do mês 07 > >> > >> Ou seja, eu precisaria acrescentar no meu resultado o valor e o saldo > dos > >> materiais até o mês 07, para eu ter um "saldo de material anterior". > >> > >> É possível? Alguém saberia como fazer? > >> > > > > > > Tente: > > > > SELECT m.descricao, > > SUM(CASE WHEN i.dt_hora < '2010-07-01'::date THEN i.quantidade > > ELSE 0) END AS qtd_ate, > > SUM(CASE WHEN i.dt_hora < '2010-07-01'::date THEN i.valor ELSE > > 0) END AS valor_ate, > > SUM(CASE WHEN i.dt_hora BETWEEN '2010-07-01'::date and > > '2010-07-31'::date THEN i.quantidade ELSE 0) END AS quantidade, > > SUM(CASE WHEN i.dt_hora BETWEEN '2010-07-01'::date and > > '2010-07-31'::date THEN i.valor ELSE 0) END AS valor > > FROM chamado.item i JOIN chamado.material m > > ON(m.id_material = i.id_material) > > WHERE i.id_entrada is not null AND > > i.dt_hora <'2010-08-01'::date > > GROUP BY m.descricao; > > > > Osvaldo > > > > Desculpe nossa falha. O ")" está no lugar errado. > > SELECT m.descricao, > SUM(CASE WHEN i.dt_hora < '2010-07-01'::date THEN i.quantidade > ELSE 0 END) AS qtd_ate, > SUM(CASE WHEN i.dt_hora < '2010-07-01'::date THEN i.valor ELSE 0 > END) AS valor_ate, > SUM(CASE WHEN i.dt_hora BETWEEN '2010-07-01'::date and > '2010-07-31'::date THEN i.quantidade ELSE 0 END) AS quantidade, > SUM(CASE WHEN i.dt_hora BETWEEN '2010-07-01'::date and > '2010-07-31'::date THEN i.valor ELSE 0 END) AS valor > FROM chamado.item i JOIN chamado.material m > ON(m.id_material = i.id_material) > WHERE i.id_entrada is not null AND > i.dt_hora <'2010-08-01'::date > GROUP BY m.descricao; > > Osvaldo > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral