Inquiridor
Duplicando Informação

Pergunta
-
Boa tarde prezados,
Estou com uma problema na SQL abaixo:
select b.NOMEFANTASIA, a.codfilial, a.CODCFO, a.NUMEROMOV, a.DATAEMISSAO, a.CHAVEACESSONFE AS 'Chave Movimento', c.CHAVEACESSO as 'Chave XML' from tmov as A inner join FCFO as B on a.CODCOLCFO=b.CODCOLIGADA and a.CODCFO=b.CODCFO left join TNFEENTRADA as C on b.CODCOLIGADA=c.CODCOLCFO and b.CODCFO=c.CODCFO where a.DATAEMISSAO >= '2020-10-26 00:00:00.000' and c.CHAVEACESSO is not null and a.CODTMV='1.2.02' and a.CODFILIAL='2' and a.CODTDO='04'
Está preenchendo o campo Chave XML com a informação da outra nota fiscal. Percebi que quando é o mesmo fornecedor, repete. A tabela que contém os fornecedores é a FCFO.
Agradeço a ajuda.
Todas as Respostas
-
Boa tarde,
Acho que está faltando adicionar mais alguma(s) coluna(s) para fazer a junção com a tabela TNFENTRADA, provavelmente colunas da tabela TMOV. Reparei que você está utilizando somente colunas da tabela FCFO, por isso deve o relacionamento deve estar sendo feito somente com base no fornecedor.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
Boa tarde,
Fiz testes com a tabela TMOV e percebi que um campo necessário fica como NULL. De qualquer maneira, fiz de outra forma que também nos atenderá; eis que tenho outro problema:
with SQ1 as (select a.DATAEMISSAO, CAST(CAST(a.NUMEROMOV AS BIGINT) AS VARCHAR) as 'Nota Fiscal', a.CODCFO, Tipo= 'Nota Fiscal', a.CHAVEACESSONFE AS 'Chave Movimento' from tmov as A inner join FCFO as B on a.CODCOLCFO=b.CODCOLIGADA and a.CODCFO=b.CODCFO where a.DATAEMISSAO >= '2020-11-01 00:00:00.000' and a.CODTMV='1.2.02' and a.CODFILIAL='2' and a.CODTDO='04' union all select a.dataemissao, a.NUMERO, a.CODCFO, Tipo = 'XML', a.CHAVEACESSO AS 'Chave Movimento' from tnfeentrada as A where a.DATAEMISSAO >= '2020-10-26 00:00:00.000' ) Select * from SQ1 order by [Chave Movimento]
Preciso que as chaves duplicadas não apareçam; as NULL devem aparecer.
Obrigado.
-
Bom dia,
Acho que seria melhor você postar a estrutura das tabelas envolvidas, uma pequena amostra dos dados (algumas linhas) e o respectivo resultado esperado para que todos possam analisar melhor a sua questão.
Olhando a consulta e o resultado que você postou acima, acho que você pode utilizar o operador Except no lugar do Union All se a coluna Tipo não for necessária, pois os demais valores são iguais. Se a coluna Tipo for necessária, acho que você pode acrescentar um filtro com o operador Exists (Not Exists no seu caso) em um dos 2 trechos, o que fica antes ou depois do Union All, para verificar se a linha correspondente existe na outra tabela, utilizando a princípio a coluna Nota Fiscal ou a Chave.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
Gelain,
Talvez se analisarmos poderíamos testar o uso do comando Intersect.
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]