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

Responder a