Bom dia, estou precisando de uma ajuda na query abaixo, pois em alguns casos, por exemplo quando existe 1 item que foi selecionado duas vezes no mesmo pedido com o mesmo lote, o agrupamento mínimo (PRO.AGRUPMIN) está sendo somado no momento da divisão do (ITEM.QTDNEG/PRO.AGRUPMIN) AS EMBALAGENS na linha 6, retornando uma quantidade incorreta de embalagens para separação.
Por exemplo, se eu tenho o produto de código 100 com o lote 123 selecionado duas vezes no mesmo pedido, com quantidade 20 em cada pedido e o agrupamento mínimo é 5, o resultado deveria ser:
SELECT DISTINCT
PAR.NOMEPARC,
CAB.NUNOTA,
ITE.QTDNEG,
AD_LAUDO,
PRO.AGRUPMIN,
(ITE.QTDNEG/PRO.AGRUPMIN) AS EMBALAGENS,
CAB.ORDEMCARGA AS "N_Ordem_de_Carga",
ORD.PESOMAX AS "Peso_Max",
ORD.CODVEICULO AS "Cod_Veiculo_da_OC",
VEI.MARCAMODELO AS "Modelo_Veiculo_OC",
VEI.PLACA AS "Placa_OC",
VEI.PESOMAX AS "Peso_Max_Veiculo_2",
TPO.DESCROPER AS "NOMETOP",
ITE.CODPROD AS "Codigo_do_Produto",
PRO.DESCRPROD AS "Descrição_do_Produto",
ITE.CONTROLE AS "Controle",
PRO.CODVOL AS "Un",
PRO.PESOBRUTO AS "Peso_Bruto",
SUM (ITE.QTDNEG * (CASE WHEN CAB.TIPMOV = 'D' THEN -1 ELSE 1 END))
AS "SOMA_QUANTIDADE_NEGOCIADA",
SUM (ITE.QTDNEG * (CASE WHEN CAB.TIPMOV = 'D' THEN -1 ELSE 1 END))
* PRO.PESOBRUTO
AS "PESO_TOTAL_ITEM"
FROM TGFCAB /*CC (Empresa, CODEMP) (Centro de Resultado, CODCENCUS) (Natureza, CODNAT) (Projeto, CODPROJ) (Parceiro, CODPARC) (TOP, CODTIPOPER) CC*/ CAB,
TGFORD /*CC (Empresa, CODEMP) CC*/ ORD,
TGFVEI VEI,
TGFITE /*CC (Empresa, CODEMP) (Local, CODLOCALORIG) CC*/ ITE,
TGFPRO /*CC (Centro de Resultado, CODCENCUS) (Natureza, CODNAT) (Projeto, CODPROJ) (Parceiro, CODPARCFORN) (Produto, CODPROD) (Grupo de Produto, CODGRUPOPROD) CC*/ PRO,
TGFTOP TPO,
TGFPAR PAR
WHERE ITE.NUNOTA = CAB.NUNOTA
AND PAR.CODPARC = CAB.CODPARC
-- AND CAB.CODEMP = ORD.CODEMP
AND ORD.CODVEICULO = VEI.CODVEICULO
AND ITE.CODPROD = PRO.CODPROD
AND CAB.CODTIPOPER = TPO.CODTIPOPER
AND CAB.DHTIPOPER = TPO.DHALTER
AND CAB.ORDEMCARGA = ORD.ORDEMCARGA
AND ((CAB.ORDEMCARGA=$P{P0}))
AND PRO.USOPROD <> 'S'
AND TPO.TIPMOV = 'P'
AND TPO.CODTIPOPER NOT IN (123,129,121,127,39,130,3200,120,126)
GROUP BY
PAR.NOMEPARC,
CAB.NUNOTA,
CAB.ORDEMCARGA,
ORD.PESOMAX,
ORD.CODVEICULO,
VEI.MARCAMODELO,
ITE.QTDNEG,
VEI.PLACA,
VEI.PESOMAX,
ITE.CODPROD,
PRO.DESCRPROD,
TPO.DESCROPER,
ITE.CONTROLE,
PRO.CODVOL,
PRO.PESOBRUTO,
PRO.AGRUPMIN,
AD_LAUDO
ORDER BY CAB.NUNOTA
Pergunta
vitorm07
Bom dia, estou precisando de uma ajuda na query abaixo, pois em alguns casos, por exemplo quando existe 1 item que foi selecionado duas vezes no mesmo pedido com o mesmo lote, o agrupamento mínimo (PRO.AGRUPMIN) está sendo somado no momento da divisão do (ITEM.QTDNEG/PRO.AGRUPMIN) AS EMBALAGENS na linha 6, retornando uma quantidade incorreta de embalagens para separação.
Por exemplo, se eu tenho o produto de código 100 com o lote 123 selecionado duas vezes no mesmo pedido, com quantidade 20 em cada pedido e o agrupamento mínimo é 5, o resultado deveria ser:
Produto 100| Lote 123| Quantidade 40| Embalagens 8 (40/5)
Porém, o que está acontecendo é:
Produto 100|Lote 123| Quantidade 40| Embalagens 4 (40/(5+5))
SELECT DISTINCT
PAR.NOMEPARC,
CAB.NUNOTA,
ITE.QTDNEG,
AD_LAUDO,
PRO.AGRUPMIN,
(ITE.QTDNEG/PRO.AGRUPMIN) AS EMBALAGENS,
CAB.ORDEMCARGA AS "N_Ordem_de_Carga",
ORD.PESOMAX AS "Peso_Max",
ORD.CODVEICULO AS "Cod_Veiculo_da_OC",
VEI.MARCAMODELO AS "Modelo_Veiculo_OC",
VEI.PLACA AS "Placa_OC",
VEI.PESOMAX AS "Peso_Max_Veiculo_2",
TPO.DESCROPER AS "NOMETOP",
ITE.CODPROD AS "Codigo_do_Produto",
PRO.DESCRPROD AS "Descrição_do_Produto",
ITE.CONTROLE AS "Controle",
PRO.CODVOL AS "Un",
PRO.PESOBRUTO AS "Peso_Bruto",
SUM (ITE.QTDNEG * (CASE WHEN CAB.TIPMOV = 'D' THEN -1 ELSE 1 END))
AS "SOMA_QUANTIDADE_NEGOCIADA",
SUM (ITE.QTDNEG * (CASE WHEN CAB.TIPMOV = 'D' THEN -1 ELSE 1 END))
* PRO.PESOBRUTO
AS "PESO_TOTAL_ITEM"
FROM TGFCAB /*CC (Empresa, CODEMP) (Centro de Resultado, CODCENCUS) (Natureza, CODNAT) (Projeto, CODPROJ) (Parceiro, CODPARC) (TOP, CODTIPOPER) CC*/ CAB,
TGFORD /*CC (Empresa, CODEMP) CC*/ ORD,
TGFVEI VEI,
TGFITE /*CC (Empresa, CODEMP) (Local, CODLOCALORIG) CC*/ ITE,
TGFPRO /*CC (Centro de Resultado, CODCENCUS) (Natureza, CODNAT) (Projeto, CODPROJ) (Parceiro, CODPARCFORN) (Produto, CODPROD) (Grupo de Produto, CODGRUPOPROD) CC*/ PRO,
TGFTOP TPO,
TGFPAR PAR
WHERE ITE.NUNOTA = CAB.NUNOTA
AND PAR.CODPARC = CAB.CODPARC
-- AND CAB.CODEMP = ORD.CODEMP
AND ORD.CODVEICULO = VEI.CODVEICULO
AND ITE.CODPROD = PRO.CODPROD
AND CAB.CODTIPOPER = TPO.CODTIPOPER
AND CAB.DHTIPOPER = TPO.DHALTER
AND CAB.ORDEMCARGA = ORD.ORDEMCARGA
AND ((CAB.ORDEMCARGA=$P{P0}))
AND PRO.USOPROD <> 'S'
AND TPO.TIPMOV = 'P'
AND TPO.CODTIPOPER NOT IN (123,129,121,127,39,130,3200,120,126)
GROUP BY
PAR.NOMEPARC,
CAB.NUNOTA,
CAB.ORDEMCARGA,
ORD.PESOMAX,
ORD.CODVEICULO,
VEI.MARCAMODELO,
ITE.QTDNEG,
VEI.PLACA,
VEI.PESOMAX,
ITE.CODPROD,
PRO.DESCRPROD,
TPO.DESCROPER,
ITE.CONTROLE,
PRO.CODVOL,
PRO.PESOBRUTO,
PRO.AGRUPMIN,
AD_LAUDO
ORDER BY CAB.NUNOTA
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.