- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Duvidas Query para Relatorio
×
Linguagem de Programação ADVPL
Perguntas Duvidas Query para Relatorio
- brunogfx4
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 79
- Obrigados Recebidos: 0
9 anos 9 meses atrás #27258
por brunogfx4
Duvidas Query para Relatorio foi criado por brunogfx4
Pessoal boa tarde, estou montando uma outra query do qual ela me traz TOTAL FATURADO,TOTAL PEDIDO e compara a meta dividida por Grupo, porem estou com muita dificuldade pela seguinte forma, qnd coloco PARAMETRO C5_EMISSAO ele preenche corretamente o total de PEDIDO, quando preencho F2_EMISSAO ele bagunca o total do pedido e quando deixo os 2 PARAMETROS ELE BAGUNCA TANTO 1 quanto o outro, segue a query abaixo, por gentileza se alguem me ajudar.
SELECT C5_VEND1,CT_SEQUEN,CT_GRUPO,SUM(C6_VALOR)PEDIDO, SUM(D2_TOTAL) FATURADO
FROM SC6020 SC6
RIGHT JOIN SC5020 SC5 ON C6_NUM=C5_NUM AND C6_CLI=C5_CLIENTE AND C6_LOJA=C5_LOJACLI AND SC5.D_E_L_E_T_<>'*'
INNER JOIN SB1010 SB1 ON C6_PRODUTO=B1_COD
LEFT JOIN SCT020 SCT ON C5_VEND1=CT_VEND
LEFT JOIN SD2020 SD2 ON D2_PEDIDO=C6_NUM AND D2_COD=C6_PRODUTO AND D2_ITEM=C6_ITEM AND D2_CLIENTE=C6_CLI AND D2_LOJA=C6_LOJA AND D2_DOC=C6_NOTA AND D2_SERIE=C6_SERIE
LEFT JOIN SF2020 SF2 on C5_NOTA=F2_DOC AND C5_SERIE=F2_SERIE and C5_VEND1=F2_VEND1 AND C5_CLIENTE=F2_CLIENTE AND C5_LOJACLI=F2_LOJA -- AND C5_EMISSAO=F2_EMISSAO
WHERE C5_VEND1 BETWEEN '007' AND '007'
AND SC6.D_E_L_E_T_<>'*'
AND B1_GRUPO=CT_GRUPO
AND CT_DATA BETWEEN '20150201' AND '20150228'
AND F2_EMISSAO BETWEEN '20150201' AND '20150228'
AND C5_EMISSAO BETWEEN '20150201' AND '20150228'
GROUP BY C5_VEND1,CT_SEQUEN,CT_DESCRI,CT_DATA,CT_GRUPO,CT_VALOR
ORDER BY C5_VEND1
SELECT C5_VEND1,CT_SEQUEN,CT_GRUPO,SUM(C6_VALOR)PEDIDO, SUM(D2_TOTAL) FATURADO
FROM SC6020 SC6
RIGHT JOIN SC5020 SC5 ON C6_NUM=C5_NUM AND C6_CLI=C5_CLIENTE AND C6_LOJA=C5_LOJACLI AND SC5.D_E_L_E_T_<>'*'
INNER JOIN SB1010 SB1 ON C6_PRODUTO=B1_COD
LEFT JOIN SCT020 SCT ON C5_VEND1=CT_VEND
LEFT JOIN SD2020 SD2 ON D2_PEDIDO=C6_NUM AND D2_COD=C6_PRODUTO AND D2_ITEM=C6_ITEM AND D2_CLIENTE=C6_CLI AND D2_LOJA=C6_LOJA AND D2_DOC=C6_NOTA AND D2_SERIE=C6_SERIE
LEFT JOIN SF2020 SF2 on C5_NOTA=F2_DOC AND C5_SERIE=F2_SERIE and C5_VEND1=F2_VEND1 AND C5_CLIENTE=F2_CLIENTE AND C5_LOJACLI=F2_LOJA -- AND C5_EMISSAO=F2_EMISSAO
WHERE C5_VEND1 BETWEEN '007' AND '007'
AND SC6.D_E_L_E_T_<>'*'
AND B1_GRUPO=CT_GRUPO
AND CT_DATA BETWEEN '20150201' AND '20150228'
AND F2_EMISSAO BETWEEN '20150201' AND '20150228'
AND C5_EMISSAO BETWEEN '20150201' AND '20150228'
GROUP BY C5_VEND1,CT_SEQUEN,CT_DESCRI,CT_DATA,CT_GRUPO,CT_VALOR
ORDER BY C5_VEND1
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
9 anos 9 meses atrás #27260
por kanaamlrr
Respondido por kanaamlrr no tópico Duvidas Query para Relatorio
Bruno, quando você utiliza um left join você não pode colocar uma condição para ele dentro do where, pois dessa forma ele acaba se "tornando" um inner join, o ideal seria colocar a condição no left join mesmo, dessa forma ele funcionaria de forma mais correta imagino eu...
Faça um teste...
Abraço!
Faça um teste...
Abraço!
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Duvidas Query para Relatorio
Tempo para a criação da página:0.116 segundos