Consulta com soma de dados agrupados

23/02/2012

0

Olá, A minha situação é a seguinte:

minhas tabelas e os valores:
TB_PEDIDO: int id_pedido
40

TB_ITEM_PEDIDO: int id_pedido, quantidade_pedida, quantidade_recebida, id_item

40 30 0 1234

tb_lote: int id_pedido, id_item, quantidade_lote
40 1234 1

Eu posso encerrar um item no pedido de 2 formas:
- Recebendo Pelo pedido mesmo.. na tabela do item na quantidade recebida
- Recebendo pelo lote na quantidade lote

Nesse Caso os dados Corretos são:

Unidade 2: quantidade pendente 0 (pois a quantidade recebida em lote para o pedido supera a pedida)

Porem no Meu Select Esta Trazendo 29.


O problema esta no select que traz a quantidade pendente em itens que tem dados no lote.
Segue o Select:

==============================================================================================================

SELECT
I.ID_PRODU_REFER,
SUM(case I.QT_PEDIDO - ITL.QT_ITEM - I.QT_ATEND_INFORM < 0 when true then 0 else I.QT_PEDIDO - ITL.QT_ITEM - I.QT_ATEND_INFORM end) as qt_pendente_com_lote

/*
O PROBLEMA É NESTA SOMA QUE TRAZ A QUANTIDADE PENDENTE DOS ITENS QUE TEM RELACAO NO LOTE DE ENTRADA, QT_PENDENTE_COMPRA COM LOTE DEVERIA SER 0
POIS A CONTA SERIA: 30 - 61 - 0 = -31 (QUANDO NUMERO É NEGATIVO JA DEIXO COMO 0)
MAS ESSE SUM ESTA FUNCIONANDO ASSIM: 30 - 60 - 0 = -30 (AQUI FICA 0) E 30 - 1 - 0 = 29, NO RESULTADO FINAL = 0 + 29 => 29,
OS LOTES ESTAO SENDO SOMADOS SEPARADOS E DEPOIS SOMA O RESULTADO, PRECISO QUE SOMA TODOS VALORES DA COLUNA PRIMEIRO, PARA DEPOIS FAZER A SUBTRAÇÃO
*/
FROM

TB_PEDIDO_COMPRA AS P
LEFT JOIN
TB_ITEM_PEDIDO_COMPRA AS I
ON
I.ID_PEDIDO_COMPRA = P.ID_PEDIDO_COMPRA
LEFT JOIN
TB_ITEM_LOTE_ENTR AS ITL
ON
ITL.ID_PEDIDO_COMPRA = I.ID_PEDIDO_COMPRA
AND
ITL.ID_PRODU_REFER = I.ID_PRODU_REFER
LEFT JOIN
TB_PRODU_REFER AS PR
ON
PR.ID_PRODU_REFER = 4105
WHERE
i.ID_PRODU_REFER = 4105
GROUP BY
I.ID_PRODU_REFER

========================================================================================================
Giovani Tizzo

Giovani Tizzo

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