|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
SQL Triplicando Resultado |
|
Versão: |
. |
|
Plataforma: |
. |
Complemento: |
|
|
DB: |
. |
Complemento: |
|
|
|
|
|
Mensagem do
GUSTAVOJ
em 13/03/2019, 17:22 h
Local: SP Registro: 22/01/2019 Postagens: 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 |
|
|
Mensagem do
ERPC
em 14/03/2019, 00:38 h
Local: SP Registro: 14/08/2011 Postagens: 316 |
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
|
|
|
Mensagem do
STROZI
em 14/03/2019, 08:00 h
Local: SP Registro: 20/09/2006 Postagens: 272 |
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® |
|
|
Mensagem do
EMERSON.EN
em 14/03/2019, 08:59 h
Local: SP Registro: 20/08/2010 Postagens: 669 |
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
|
|