Senhores não querendo abusar da boa bontade de vocês, fiz o SQL abaixo, 
mas quando olho pra ele penso que poderia melhora-lo,
em algumas tentativas aqui não obtive muito sucesso.
O tempo de execução está ótimo, mas a didática não me parece muito amigável.
A ideia é:
Tenho uma tabela de VendaItens (mv_vendas_pre_itens) onde guardo a quantidade 
de itens vendidos
A tabela de Servicos (mv_servicos_balcao) onde tenho o serviços já executados
A tabela Vendas (mv_vendas_pre) somente guarda o tipo de venda “T” ou “F” (pode 
ser ignorada a principio)
Preciso mostrar o saldo de cada Item, quando for maior que zero, então tenho:

select z.* from (select 
  a.cod_key,
  a.pedido,
  a.codigo,
  b.descricao,
  a.qtd_item,
  (a.qtd_item - coalesce(sum(d.qtd_item), 0)) as saldo2,
  a.valor_ven,
  a.cod_id
from mv_vendas_pre_itens a
inner join mv_produtos b on(b.codigo = a.codigo)
  and(b.tipo in('M', 'N'))
inner join mv_vendas_pre c on(c.cod_id = a.cod_id)
  and(c.pedido = a.pedido)
  and(c.tipo = 'T')
left join mv_servicos_balcao d on(d.cod_id = a.cod_id)
  and(d.pedido = a.pedido)
  and(d.codigo = a.codigo)
  and(d.obs not in('C'))
where (a.obs not in('C'))
and(a.cod_id = 30992)
group by
  a.cod_key,
  a.pedido,
  a.codigo,
  b.descricao,
  a.qtd_item,
  a.valor_ven,
  a.cod_id,
  d.qtd_item
) as z
where (z.saldo2 > 0)
order by 
  z.pedido,
  z.descricao

Coloquei o result dentro de Z para poder pegar somente o saldo maior que 0 
(zero)

O que acham desse SQL, é isso mesmo, ou tem uma maneira mais “amigável”?

ps * Na tabela de itens tenho um campo pra guardar o Saldo a cada post, 
mas não acho muito seguro, principalmente em um ambiente de concorrência, 
como um balcão onde pode-se incluir ou excluir um serviço a todo momento,  por 
varios operadores


Marcelo Silva
-------------------------------------------------------------
Desenvolvedor: Delphi, PHP, ASP

Cel: (11) 95052-1407 Tim
Cel: (11) 99693-4251 Vivo
msn: [email protected]

Empresa: Perfil Medicina e Segurança do Trabalho
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a