none
Duplicando Informação RRS feed

  • 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.

    segunda-feira, 9 de novembro de 2020 15:04

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

    segunda-feira, 9 de novembro de 2020 15:29
  • 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.

    segunda-feira, 9 de novembro de 2020 20:48
  • 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

    terça-feira, 10 de novembro de 2020 12:43
  • 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]

    terça-feira, 10 de novembro de 2020 21:57