- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Query executa no SQL e no Protheus falta um cálculo
Perguntas Query executa no SQL e no Protheus falta um cálculo
- CZL1
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 21
- Obrigados Recebidos: 0
2 anos 9 meses atrás #33241
por CZL1
Query executa no SQL e no Protheus falta um cálculo foi criado por CZL1
Bom dia!
Se alguém puder me dar uma luz eu agradeço!
Estou rodando uma query para um relatório que no SQL roda redondo, mas, quando executo dentro do código, um dos cálculos não é feito na query. Para ser mais específico, o cálculo do campo QT_PROD_DELV_CREME.
Quando olho da depuração o conteúdo desse campo ele está zerado e no SQL mostra a somatória corretamente.
SELECT SD3.D3_FILIAL
, SD3.D3_OP
, SD3.D3_EMISSAO
, SD3.D3_COD
, SB1.B1_DESC
, SUM(SD3.D3_QUANT) AS QUANT
, SUM(SD3.D3_CUSTO1) AS CUSTO
, SD3.D3_TIPO
, SD3.D3_CF
, ISNULL (( SELECT SUM(D3_QUANT) FROM SD3010 AS PR WITH(NOLOCK)
WHERE PR.D_E_L_E_T_ = ''
AND PR.D3_ESTORNO <> 'S'
AND SD3.D3_FILIAL = PR.D3_FILIAL
AND LEFT(SD3.D3_OP,6) = LEFT(PR.D3_OP,6)
AND PR.D3_CF = 'PR0'
AND PR.D3_COD IN ('10002','10003','10004','10005','10006','10007','10008','10009','10010')),0) AS QT_PROD_LEITE_PAD
, ISNULL (( SELECT TOP(1) SUM(D3_QUANT) FROM SD3010 AS DE WITH(NOLOCK)
WHERE DE.D_E_L_E_T_ = ''
AND SD3.D3_FILIAL = DE.D3_FILIAL
AND LEFT(SD3.D3_OP,6) = LEFT(DE.D3_OP,6)
AND LEFT(DE.D3_CF,2) = 'DE'
AND DE.D3_COD IN ('13000','13001')),0) AS QT_PROD_DELV_CREME
, 0 QT_UTIL_SORO
, 0 QT_UTIL_LEITE_PAD
, 0 QT_PROD_DELV_SORO
FROM SD3010 AS SD3
INNER JOIN SB1010 AS SB1
ON SB1.B1_COD = D3_COD
INNER JOIN SC2010 AS SC2
ON SC2.C2_NUM = LEFT(SD3.D3_OP,6)
AND SC2.C2_FILIAL = LEFT(SD3.D3_FILIAL,6)
WHERE SD3.D_E_L_E_T_ = ''
AND SD3.D3_ESTORNO <> 'S'
AND LEFT(D3_CF,2) = 'RE'
AND SD3.D3_OP <> ''
AND SD3.D3_COD BETWEEN '10000' AND '10999'
AND SD3.D3_FILIAL IN ('0202','0203','')
AND SD3.D3_EMISSAO BETWEEN '20211101' AND '20211130'
AND SB1.B1_DESC LIKE '%CRU%'
AND LEFT(D3_OP,6) BETWEEN '' AND 'zzzzzz'
AND SC2.D_E_L_E_T_ = ''
AND C2_TPOP = 'F'
AND C2_DATRF <> ''
AND C2_QUJE >= C2_QUANT
GROUP BY SD3.D3_FILIAL
, SD3.D3_OP
, SD3.D3_EMISSAO
, SD3.D3_COD
, SB1.B1_DESC
, SD3.D3_TIPO
, SD3.D3_CF
UNION ALL
SELECT SD3.D3_FILIAL
, SD3.D3_OP
, SD3.D3_EMISSAO
, SD3.D3_COD
, SB1.B1_DESC
, SUM(SD3.D3_QUANT) AS QUANT
, SUM(SD3.D3_CUSTO1) AS CUSTO_PA
, SD3.D3_TIPO
, SD3.D3_CF
, ISNULL (( SELECT SUM(D3_QUANT) FROM SD3010 AS UL WITH(NOLOCK)
WHERE UL.D_E_L_E_T_ = ''
AND UL.D3_ESTORNO <> 'S'
AND SD3.D3_FILIAL = UL.D3_FILIAL
AND LEFT(SD3.D3_OP,6) = LEFT(UL.D3_OP,6)
AND LEFT(UL.D3_CF,2) = 'RE'
AND UL.D3_COD IN ('13002')),0) AS QT_UTIL_SORO
, 0 QT_UTIL_LEITE_PAD
, ISNULL (( SELECT SUM(D3_QUANT) FROM SD3010 AS UL WITH(NOLOCK)
WHERE UL.D_E_L_E_T_ = ''
AND UL.D3_ESTORNO <> 'S'
AND SD3.D3_FILIAL = UL.D3_FILIAL
AND LEFT(SD3.D3_OP,6) = LEFT(UL.D3_OP,6)
AND LEFT(UL.D3_CF,2) = 'RE'
AND UL.D3_COD IN ('13002')),0) AS QT_PROD_DELV_SORO
, ISNULL (( SELECT SUM(D3_QUANT) FROM SD3010 AS QT WITH(NOLOCK)
WHERE QT.D_E_L_E_T_ = ''
AND QT.D3_ESTORNO <> 'S'
AND SD3.D3_FILIAL = QT.D3_FILIAL
AND LEFT(SD3.D3_OP,6) = LEFT(QT.D3_OP,6)
AND LEFT(QT.D3_CF,2) = 'RE'
AND QT.D3_COD IN ('10002','10003','10004','10005','10006','10007','10008','10009','10010')),0) AS QT_UTIL_LEITE_PAD
, ISNULL (( SELECT SUM(D3_QUANT) FROM SD3010 AS DE WITH(NOLOCK)
WHERE DE.D_E_L_E_T_ = ''
AND DE.D3_ESTORNO <> 'S'
AND DE.D3_FILIAL = SD3.D3_FILIAL
AND LEFT(DE.D3_OP,6) = LEFT(SD3.D3_OP,6)
AND LEFT(DE.D3_CF,2) = 'DE'
AND DE.D3_COD IN ('13002')),0) AS QT_PROD_DELV_SORO
FROM SD3010 AS SD3
INNER JOIN SB1010 AS SB1
ON SB1.B1_COD = D3_COD
INNER JOIN SC2010 AS SC2
ON SC2.C2_NUM = LEFT(SD3.D3_OP,6)
AND SC2.C2_FILIAL = LEFT(SD3.D3_FILIAL,6)
WHERE SD3.D_E_L_E_T_ = ''
AND SD3.D3_ESTORNO <> 'S'
AND SD3.D3_CF = 'PR0'
AND SD3.D3_OP <> ''
AND SD3.D3_COD BETWEEN '14000' AND '14999'
AND SD3.D3_FILIAL IN ('0202','0203','')
AND SD3.D3_EMISSAO BETWEEN '20211101' AND '20211130'
AND LEFT(D3_OP,6) BETWEEN '' AND 'zzzzzz'
AND SC2.D_E_L_E_T_ = ''
AND C2_TPOP = 'F'
AND C2_DATRF <> ''
AND C2_QUJE >= C2_QUANT
GROUP BY SD3.D3_FILIAL
, SD3.D3_OP
, SD3.D3_EMISSAO
, SD3.D3_COD
, SB1.B1_DESC
, SD3.D3_TIPO
, SD3.D3_CF
Se alguém puder me dar uma luz eu agradeço!
Estou rodando uma query para um relatório que no SQL roda redondo, mas, quando executo dentro do código, um dos cálculos não é feito na query. Para ser mais específico, o cálculo do campo QT_PROD_DELV_CREME.
Quando olho da depuração o conteúdo desse campo ele está zerado e no SQL mostra a somatória corretamente.
SELECT SD3.D3_FILIAL
, SD3.D3_OP
, SD3.D3_EMISSAO
, SD3.D3_COD
, SB1.B1_DESC
, SUM(SD3.D3_QUANT) AS QUANT
, SUM(SD3.D3_CUSTO1) AS CUSTO
, SD3.D3_TIPO
, SD3.D3_CF
, ISNULL (( SELECT SUM(D3_QUANT) FROM SD3010 AS PR WITH(NOLOCK)
WHERE PR.D_E_L_E_T_ = ''
AND PR.D3_ESTORNO <> 'S'
AND SD3.D3_FILIAL = PR.D3_FILIAL
AND LEFT(SD3.D3_OP,6) = LEFT(PR.D3_OP,6)
AND PR.D3_CF = 'PR0'
AND PR.D3_COD IN ('10002','10003','10004','10005','10006','10007','10008','10009','10010')),0) AS QT_PROD_LEITE_PAD
, ISNULL (( SELECT TOP(1) SUM(D3_QUANT) FROM SD3010 AS DE WITH(NOLOCK)
WHERE DE.D_E_L_E_T_ = ''
AND SD3.D3_FILIAL = DE.D3_FILIAL
AND LEFT(SD3.D3_OP,6) = LEFT(DE.D3_OP,6)
AND LEFT(DE.D3_CF,2) = 'DE'
AND DE.D3_COD IN ('13000','13001')),0) AS QT_PROD_DELV_CREME
, 0 QT_UTIL_SORO
, 0 QT_UTIL_LEITE_PAD
, 0 QT_PROD_DELV_SORO
FROM SD3010 AS SD3
INNER JOIN SB1010 AS SB1
ON SB1.B1_COD = D3_COD
INNER JOIN SC2010 AS SC2
ON SC2.C2_NUM = LEFT(SD3.D3_OP,6)
AND SC2.C2_FILIAL = LEFT(SD3.D3_FILIAL,6)
WHERE SD3.D_E_L_E_T_ = ''
AND SD3.D3_ESTORNO <> 'S'
AND LEFT(D3_CF,2) = 'RE'
AND SD3.D3_OP <> ''
AND SD3.D3_COD BETWEEN '10000' AND '10999'
AND SD3.D3_FILIAL IN ('0202','0203','')
AND SD3.D3_EMISSAO BETWEEN '20211101' AND '20211130'
AND SB1.B1_DESC LIKE '%CRU%'
AND LEFT(D3_OP,6) BETWEEN '' AND 'zzzzzz'
AND SC2.D_E_L_E_T_ = ''
AND C2_TPOP = 'F'
AND C2_DATRF <> ''
AND C2_QUJE >= C2_QUANT
GROUP BY SD3.D3_FILIAL
, SD3.D3_OP
, SD3.D3_EMISSAO
, SD3.D3_COD
, SB1.B1_DESC
, SD3.D3_TIPO
, SD3.D3_CF
UNION ALL
SELECT SD3.D3_FILIAL
, SD3.D3_OP
, SD3.D3_EMISSAO
, SD3.D3_COD
, SB1.B1_DESC
, SUM(SD3.D3_QUANT) AS QUANT
, SUM(SD3.D3_CUSTO1) AS CUSTO_PA
, SD3.D3_TIPO
, SD3.D3_CF
, ISNULL (( SELECT SUM(D3_QUANT) FROM SD3010 AS UL WITH(NOLOCK)
WHERE UL.D_E_L_E_T_ = ''
AND UL.D3_ESTORNO <> 'S'
AND SD3.D3_FILIAL = UL.D3_FILIAL
AND LEFT(SD3.D3_OP,6) = LEFT(UL.D3_OP,6)
AND LEFT(UL.D3_CF,2) = 'RE'
AND UL.D3_COD IN ('13002')),0) AS QT_UTIL_SORO
, 0 QT_UTIL_LEITE_PAD
, ISNULL (( SELECT SUM(D3_QUANT) FROM SD3010 AS UL WITH(NOLOCK)
WHERE UL.D_E_L_E_T_ = ''
AND UL.D3_ESTORNO <> 'S'
AND SD3.D3_FILIAL = UL.D3_FILIAL
AND LEFT(SD3.D3_OP,6) = LEFT(UL.D3_OP,6)
AND LEFT(UL.D3_CF,2) = 'RE'
AND UL.D3_COD IN ('13002')),0) AS QT_PROD_DELV_SORO
, ISNULL (( SELECT SUM(D3_QUANT) FROM SD3010 AS QT WITH(NOLOCK)
WHERE QT.D_E_L_E_T_ = ''
AND QT.D3_ESTORNO <> 'S'
AND SD3.D3_FILIAL = QT.D3_FILIAL
AND LEFT(SD3.D3_OP,6) = LEFT(QT.D3_OP,6)
AND LEFT(QT.D3_CF,2) = 'RE'
AND QT.D3_COD IN ('10002','10003','10004','10005','10006','10007','10008','10009','10010')),0) AS QT_UTIL_LEITE_PAD
, ISNULL (( SELECT SUM(D3_QUANT) FROM SD3010 AS DE WITH(NOLOCK)
WHERE DE.D_E_L_E_T_ = ''
AND DE.D3_ESTORNO <> 'S'
AND DE.D3_FILIAL = SD3.D3_FILIAL
AND LEFT(DE.D3_OP,6) = LEFT(SD3.D3_OP,6)
AND LEFT(DE.D3_CF,2) = 'DE'
AND DE.D3_COD IN ('13002')),0) AS QT_PROD_DELV_SORO
FROM SD3010 AS SD3
INNER JOIN SB1010 AS SB1
ON SB1.B1_COD = D3_COD
INNER JOIN SC2010 AS SC2
ON SC2.C2_NUM = LEFT(SD3.D3_OP,6)
AND SC2.C2_FILIAL = LEFT(SD3.D3_FILIAL,6)
WHERE SD3.D_E_L_E_T_ = ''
AND SD3.D3_ESTORNO <> 'S'
AND SD3.D3_CF = 'PR0'
AND SD3.D3_OP <> ''
AND SD3.D3_COD BETWEEN '14000' AND '14999'
AND SD3.D3_FILIAL IN ('0202','0203','')
AND SD3.D3_EMISSAO BETWEEN '20211101' AND '20211130'
AND LEFT(D3_OP,6) BETWEEN '' AND 'zzzzzz'
AND SC2.D_E_L_E_T_ = ''
AND C2_TPOP = 'F'
AND C2_DATRF <> ''
AND C2_QUJE >= C2_QUANT
GROUP BY SD3.D3_FILIAL
, SD3.D3_OP
, SD3.D3_EMISSAO
, SD3.D3_COD
, SB1.B1_DESC
, SD3.D3_TIPO
, SD3.D3_CF
Por favor Acessar ou Registrar para participar da conversa.
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 297
- Obrigados Recebidos: 21
2 anos 9 meses atrás #33242
por admin
Respondido por admin no tópico Query executa no SQL e no Protheus falta um cálculo
Cara diminui o tamanho do nome do campo QT_PROD_DELV_CREME
no minimo 10 caracteres, veja se funciona.
no minimo 10 caracteres, veja se funciona.
Os seguintes usuário(s) disseram Obrigado: CZL1
Por favor Acessar ou Registrar para participar da conversa.
- CZL1
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 21
- Obrigados Recebidos: 0
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 297
- Obrigados Recebidos: 21
- CZL1
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 21
- Obrigados Recebidos: 0
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Query executa no SQL e no Protheus falta um cálculo
Tempo para a criação da página:0.115 segundos