Array
(
)

Consulta SQL - Cacular valor

Mmoreira
   - 03 set 2004

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


Thomaz_prg
   - 03 set 2004

Bom, acho que ficaria mais ou menos assim:

#Código


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...