Consulta SQL - Cacular valor

03/09/2004

0

Salve pessoal do forum

Estou com duvida em um consulta SQL e Firebird, é o seguinte:

Tenho uma tabela ( TB_PEDIDO_ITENS ) e nesta tabela tenho entre outros os seguintes campos:

COD_PEDIDO_LIGACAO
QTD_ITENS
VR_TOTAL_REVENDA
ENTRA_SAI
COD_FILIAL

Atualmente estou usando o seguinte comando SQL para colocar os valores em 2 Label´s

select
sum(QTD_ITENS) as ITENS,
sum(VR_TOTAL_REVENDA) as VR_ITENS
from TB_PEDIDO_ITENS
where (COD_FILIAL = :COD_FILIAL) and
(ENTRA_SAI = :ENTRA_SAI) and
(COD_PEDIDO_LIGACAO = :COD_PEDIDO_LIGACAO)

Funciona perfeitamente mas tem um problema neste sistema no momento em que o cliente esta fazendo uma compra ele tambem pode devolver mercadorias que não foram vendidas gerando assim uma diferença .... E onde é definido se o produto esta saindo ou entrando é o campo ( ENTRA_SAI ) que tem os seguintes valoes ´s´ -> SAIDA ou ´e´ -> ENTRADA .
Eu tenho que mostrar no label o VALOR TOTAL DO PEDIDO ja subtraindo o valor das mercadorias que estao entrando. Eu não tenho muito conhecimento em SQL .... Eu gostaria que ficasse mais ou menos assim no final:

select
sum(QTD_ITENS) as ITENS, {Aqui normal .. eu só tenho que mostrar a quantidade de peças que estam saindo => where ENTRA_SAI = ´s´}
sum(VR_TOTAL_REVENDA) as VR_ITENS {Aqui ja subtrai o valor das mercadorias que estao entrando. ENTRA_SAI = ´s´ - (menos) ENTRA_SAI = ´e´}
from TB_PEDIDO_ITENS
where (COD_FILIAL = :COD_FILIAL) and
(ENTRA_SAI = :ENTRA_SAI) and {E esta linha entao teria que ser removida}
(COD_PEDIDO_LIGACAO = :COD_PEDIDO_LIGACAO)

Espero que eu tenha conseguido expressar minha duvida ....
Se eu usar 2 IBQuery´s não é muito dificil de conseguir fazer o que eu estou querendo .... mas acho que vai ficar muito gambiarrado ... se for possível fazer usando apenas uma IBQuery gostaria que os colegas me ajudassem ...

Um abraço a todos

Marcelo MS


Mmoreira

Mmoreira

Responder

Posts

03/09/2004

Thomaz_prg

Bom, acho que ficaria mais ou menos assim:

SELECT 
 (S.ITENS-E.ITENS) as ITENS_T,
 (S.VR_ITENS-E.VR_ITENS) as VR_ITENS_T
FROM 
 (select 
  sum(QTD_ITENS) as ITENS, 
  sum(VR_TOTAL_REVENDA) as VR_ITENS 
  from TB_PEDIDO_ITENS 
  where (COD_FILIAL = :COD_FILIAL) and 
  (ENTRA_SAI = ´s´) and 
  (COD_PEDIDO_LIGACAO = :COD_PEDIDO_LIGACAO) ) S, 
 (select 
  sum(QTD_ITENS) as ITENS, 
  sum(VR_TOTAL_REVENDA) as VR_ITENS 
  from TB_PEDIDO_ITENS 
  where (COD_FILIAL = :COD_FILIAL) and 
  (ENTRA_SAI = ´e´) and 
  (COD_PEDIDO_LIGACAO = :COD_PEDIDO_LIGACAO) ) E


Tente assim e veja se funciona...


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar