Jump to content
Fórum Script Brasil
  • 0

Select com soma de dados agrupados


inavoig.17

Question

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 já 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

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

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...