Imprimi Página | Fechar janela |
SQL Triplicando Resultado Impresso de: Helpfacil - Portal do conhecimento Nome do Forum: ADVPL Descrição do Forum: Dúvidas sobre a programação em ADVPL URL:http://www.helpfacil.com.br/display_topic_threads.asp?ForumID=1&TopicID=42586 Data da Impressão: quinta-feira, 18 de abril de 2024 at 00:25 Topico: SQL Triplicando Resultado Postado por: GUSTAVOJ Assunto: SQL Triplicando Resultado Data Postagem: quarta-feira, 13 de março de 2019 at 17:22 Quando eu executo este fonte no SQL, trás e mesmo resultado três vezes. Alguém, poderia me ajudar?? SELECT CN9_NUMERO AS ‘CONTRATO‘, CONVERT(DATE, SUBSTRING(CN9_DTINIC, 1, 4) + ‘-‘ + SUBSTRING(CN9_DTINIC, 5, 2) + ‘-‘ + SUBSTRING(CN9_DTINIC, 7, 2)) AS ‘DT INICIO‘, CONVERT(DATE, SUBSTRING(CN9_DTFIM, 1, 4) + ‘-‘ + SUBSTRING(CN9_DTFIM, 5, 2) + ‘-‘ + SUBSTRING(CN9_DTFIM, 7, 2)) AS ‘DT FIM‘, CN9_NUMERO AS ‘CENTRO DE CUSTO‘, CN9_ZZEMTI AS ‘ART EMITIDA‘, CONVERT(DATE,CN9_ZZDTVA) AS ‘VALIDADE DA ART‘, CN9_VLATU AS ‘VALOR CONTRATO‘, CNC_CLIENT AS ‘CLIENTE‘, CNC_LOJACL AS ‘LOJA CLIENTE‘, A1_NOME AS ‘NOME CLIENTE‘, CNE_PEDIDO AS ‘PEDIDO‘, CNE_PERC AS ‘PERCENTUAL‘, C6_NOTA AS ‘NOTA FISCAL‘, E1_NUM AS ‘NUMERO‘, CNE_REVISA, CONVERT(DATE,E1_BAIXA) AS ‘DT BAIXA‘, CNF_VLPREV AS ‘VALOR PREVISTO‘, CNF_PARCEL AS ‘PARCELA‘, CONVERT(DATE,CNF_DTVENC) AS ‘VENCIMENTO‘ FROM CN9010 CN9 INNER JOIN CNC010 CNC ON CNC.CNC_NUMERO = CN9.CN9_NUMERO AND CNC.D_E_L_E_T_ =‘‘ INNER JOIN SA1010 A1 ON CNC.CNC_CLIENT = A1.A1_COD AND CNC.CNC_LOJACL = A1.A1_LOJA AND A1.D_E_L_E_T_ =‘‘ INNER JOIN CNF010 CNF ON CNF.CNF_CONTRA = CN9.CN9_NUMERO AND CN9.D_E_L_E_T_=‘‘ INNER JOIN CNE010 CNE ON CNE.CNE_CONTRA = CNF.CNF_CONTRA AND CNE.D_E_L_E_T_=‘‘ INNER JOIN SC6010 C6 ON C6.C6_NUM = CNE.CNE_PEDIDO AND C6.D_E_L_E_T_ =‘‘ INNER JOIN SE1010 E1 ON E1.E1_NUM = C6.C6_NOTA AND E1.D_E_L_E_T_ =‘‘ AND E1.E1_TIPO =‘NF‘ WHERE CN9.D_E_L_E_T_=‘‘ AND CN9_NUMERO = ‘201000272‘ AND CN9_REVISA = ‘002‘ AND CN9.D_E_L_E_T_=‘‘ AND CNF_CONTRA = ‘201000272‘ AND CNF_REVISA = ‘002‘ AND CNF.D_E_L_E_T_=‘‘ AND CNE_CONTRA = ‘201000272‘ AND CNE_REVISA = ‘002‘ AND CNE.D_E_L_E_T_=‘‘ AND E1_PREFIXO = ‘SRV‘ AND CNC_NUMERO = ‘201000272‘ AND CNC_REVISA = ‘002‘ GROUP BY CN9_NUMERO,CN9_REVISA,CN9_DTINIC,CN9_DTFIM,CN9_NUMERO,CN9_ZZEMTI,CN9_ZZDTVA,CN9_VLATU,CNC_CLIENT,CNC_LOJACL, A1_NOME, CNE_PEDIDO, CNE_PERC, C6_NOTA, E1_NUM, CNE_REVISA, E1_BAIXA, CNF_VLPREV, CNF_PARCEL, CNF_DTVENC Respostas: Postado Por: ERPC Data Postagem: quinta-feira, 14 de março de 2019 at 00:38 Use o próprio Query Analizer do Banco de Dados, pegue o resultado da Query, e monte queries menores para testar os seus "JOINS" . Algum JOIN est[a retornando mais de um registro para a condicão usada. Por exemplo, para o Join com a CNC010 baseado no campo CN9_NUMERO, pegue o valor retornado na coluna ‘centro de custo‘ e monte uma query baseada no join, trocando o valor (‘xxx‘) pelo valor retornado. select * from CNC010 CNC WHERE CNC.CNC_NUMERO = ‘xxx‘ AND CNC.D_E_L_E_T_ =‘ ‘ Faça isso para os outros joins, um deles vai retornar mais de uma linha. Abraços Postado Por: STROZI Data Postagem: quinta-feira, 14 de março de 2019 at 08:00 Bom dia, Este título possui quantas parcelas? Provavelmente seu problema está ai. Para resolver, ou você dá um jeito de trazer as parcelas todas na mesma linha em campos diferentes, ou retira a coluna parcela e soma o valor. Strozi® Postado Por: EMERSON.EN Data Postagem: quinta-feira, 14 de março de 2019 at 08:59 outra coisa: como regra, passe a utilizar a filial nos filtros, isso vai melhorar bastante a performance da pesquisa. SELECT CN9.CN9_NUMERO AS ‘CONTRATO‘, CONVERT(DATE, SUBSTRING(CN9.CN9_DTINIC, 1, 4) + ‘-‘ + SUBSTRING(CN9.CN9_DTINIC, 5, 2) + ‘-‘ + SUBSTRING(CN9.CN9_DTINIC, 7, 2)) AS ‘DT INICIO‘, CONVERT(DATE, SUBSTRING(CN9.CN9_DTFIM, 1, 4) + ‘-‘ + SUBSTRING(CN9.CN9_DTFIM, 5, 2) + ‘-‘ + SUBSTRING(CN9.CN9_DTFIM, 7, 2)) AS ‘DT FIM‘, CN9.CN9_NUMERO AS ‘CENTRO DE CUSTO‘, -- CN9_ZZEMTI AS ‘ART EMITIDA‘, -- CONVERT(DATE,CN9_ZZDTVA) AS ‘VALIDADE DA ART‘, CN9.CN9_VLATU AS ‘VALOR CONTRATO‘, CNC.CNC_CLIENT AS ‘CLIENTE‘, CNC.CNC_LOJACL AS ‘LOJA CLIENTE‘, A1.A1_NOME AS ‘NOME CLIENTE‘, CNE.CNE_PEDIDO AS ‘PEDIDO‘, CNE.CNE_PERC AS ‘PERCENTUAL‘, C6.C6_NOTA AS ‘NOTA FISCAL‘, E1.E1_NUM AS ‘NUMERO‘, CNE.CNE_REVISA, CONVERT(DATE,E1.E1_BAIXA) AS ‘DT BAIXA‘, CNF.CNF_VLPREV AS ‘VALOR PREVISTO‘, CNF.CNF_PARCEL AS ‘PARCELA‘, CONVERT(DATE,CNF.CNF_DTVENC) AS ‘VENCIMENTO‘ FROM CN9010 CN9 INNER JOIN CNC010 CNC ON CNC.D_E_L_E_T_ = ‘‘ AND CNC.CNC_NUMERO = CN9.CN9_NUMERO AND CNC.CNC_REVISA = CN9.CN9_REVISA INNER JOIN SA1010 A1 ON A1.D_E_L_E_T_ = ‘‘ AND A1.A1_COD = CNC.CNC_CLIENT AND A1.A1_LOJA = CNC.CNC_LOJACL INNER JOIN CNF010 CNF ON CNF.D_E_L_E_T_= ‘‘ AND CNF.CNF_CONTRA = CN9.CN9_NUMERO AND CNF.CNF_REVISA = CN9.CN9_REVISA INNER JOIN CNE010 CNE ON CNE.D_E_L_E_T_= ‘‘ AND CNE.CNE_CONTRA = CN9.CN9_NUMERO AND CNE.CNE_REVISA = CN9.CN9_REVISA INNER JOIN SC6010 C6 ON C6.D_E_L_E_T_ = ‘‘ AND C6.C6_NUM = CNE.CNE_PEDIDO INNER JOIN SE1010 E1 ON E1.D_E_L_E_T_ = ‘‘ AND E1.E1_NUM = C6.C6_NOTA AND E1.E1_TIPO = ‘NF‘ AND E1_PREFIXO = ‘SRV‘ WHERE CN9.D_E_L_E_T_=‘‘ AND CN9.CN9_NUMERO = ‘201000272‘ AND CN9.CN9_REVISA = ‘002‘ GROUP BY CN9.CN9_NUMERO,CN9.CN9_REVISA,CN9.CN9_DTINIC,CN9.CN9_DTFIM, /*CN9.CN9_ZZEMTI,CN9.CN9_ZZDTVA,*/CN9.CN9_VLATU,CNC.CNC_CLIENT,CNC.CNC_LOJACL, A1.A1_NOME,CNE.CNE_PEDIDO,CNE.CNE_PERC,C6.C6_NOTA, E1.E1_NUM,E1.E1_BAIXA,CNF.CNF_VLPREV,CNF.CNF_PARCEL,CNF.CNF_DTVENC |
Imprimir Página | Fechar Janela |