PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
SQL Triplicando Resultado
Versão:
.
Plataforma:
.
Complemento:
DB:
.
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GUSTAVOJ GUSTAVOJ em 13/03/2019, 17:22 h
Local: SP  Registro: 22/01/2019  Postagens: 12
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

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ERPC ERPC em 14/03/2019, 00:38 h
Local: SP  Registro: 14/08/2011  Postagens: 297
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

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário STROZI STROZI em 14/03/2019, 08:00 h
Local: SP  Registro: 20/09/2006  Postagens: 267
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®

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 14/03/2019, 08:59 h
Local: SP  Registro: 20/08/2010  Postagens: 458
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

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal