Usuário com melhor resposta
Dificuldades com Query

Pergunta
-
Olá,
Estou com uma certa dificuldade em uma query que estou criando aqui no trabalho, aonde preciso encontrar notas fiscais que uma empresa emitiu, e que foram canceladas. O resultado da query não trás nenhum valor, salvo caso eu tire o Where de data de emissão, que aparece uma de 2016. O problema é que essa empresa está sempre cancelando notas, por isso tenho certeza que essa não é o único valor que deveria estar aparecendo.
SELECT DISTINCT t1.NUMERONF, t1.NROEMPRESA, t1.STATUSNFE, t1.DTAEMISSAO,
t1.DTASAIDA, t1.DTARECEBIMENTO, t1.DTAENTRADA, t1.DTACANCELAMENTO,
t1.OBSERVACAOLF, t1.OBSERVACAO, t1.MOTIVOCANCELOU, t2.NOMERAZAO, t3.VLRITEM
FROM MLF_NOTAFISCAL t1
INNER JOIN GE_PESSOA t2 ON t1.SEQPESSOA = t2.SEQPESSOA
INNER JOIN MLF_NFITEM t3 ON t2.SEQPESSOA = t3.SEQPESSOA
WHERE t3.NROEMPRESA = 90
AND t3.NUMERONF = t1.NUMERONF
AND t1.USUCANCELAMENTO IS NOT NULL
AND DTAEMISSAO >= '01/01/2017'
AND t2.NOMERAZAO LIKE '%BOA%';
Respostas
-
Lucas, bom dia
Também dê uma olhada no relacionamento do seu Inner join.. talvez você tenha outras chaves que não está passando como parâmetro.
Outra sugestão.. vejo que vc passa uma NFITEM e pode exitir notas (servico) que não tem item.. então recomendo que use LEFT JOIN ao inves do INNER JOIN.
Carlos Henrique Quadrado - Lençóis Paulista - SP - Brasil
ITIL v3 | ITMP |
Caso a resposta tenha sido útil clique em Votar. Caso a resposta tenha resolvido sua necessidade marque como Resposta.
Please use Vote As Helpful if a post was useful or use Marked as Answer if my post solved your necessity.
- Sugerido como Resposta Junior Galvão - MVPMVP quinta-feira, 21 de setembro de 2017 00:43
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 25 de setembro de 2017 13:50
-
Bom dia, Talvez seu problema seja no formado da data, vc deve passar no mesmo formato que está armazenado , ou seus parametros
Where estão inconsistentes , acredito que o trecho (AND t3.NUMERONF = t1.NUMERONF) é desnecessário
O que tem armazenado as colunas STATUSNFE,DTACANCELAMENTO,MOTIVOCANCELOU
faça alguns testes assim para saber se o seu where está correto
SELECT DISTINCT t1.NUMERONF , t1.NROEMPRESA , t1.STATUSNFE , t1.DTAEMISSAO , t1.DTASAIDA , t1.DTARECEBIMENTO , t1.DTAENTRADA , t1.DTACANCELAMENTO , t1.OBSERVACAOLF , t1.OBSERVACAO , t1.MOTIVOCANCELOU , t2.NOMERAZAO , t3.VLRITEM FROM MLF_NOTAFISCAL t1 INNER JOIN GE_PESSOA t2 ON t1.SEQPESSOA = t2.SEQPESSOA INNER JOIN MLF_NFITEM t3 ON t2.SEQPESSOA = t3.SEQPESSOA WHERE t3.NROEMPRESA = 90 --AND t3.NUMERONF = t1.NUMERONF AND t1.USUCANCELAMENTO IS NOT NULL AND t2.NOMERAZAO LIKE '%BOA%' AND DTAEMISSAO >= '01/01/2017';
e esse
SELECT DISTINCT t1.NUMERONF , t1.NROEMPRESA , t1.STATUSNFE , t1.DTAEMISSAO , t1.DTASAIDA , t1.DTARECEBIMENTO , t1.DTAENTRADA , t1.DTACANCELAMENTO , t1.OBSERVACAOLF , t1.OBSERVACAO , t1.MOTIVOCANCELOU , t2.NOMERAZAO , t3.VLRITEM FROM MLF_NOTAFISCAL t1 INNER JOIN GE_PESSOA t2 ON t1.SEQPESSOA = t2.SEQPESSOA INNER JOIN MLF_NFITEM t3 ON t2.SEQPESSOA = t3.SEQPESSOA WHERE t3.NROEMPRESA = 90 --AND t3.NUMERONF = t1.NUMERONF --AND t1.USUCANCELAMENTO IS NOT NULL AND t2.NOMERAZAO LIKE '%BOA%' AND DTAEMISSAO >= '01/01/2017' ORDER BY t1.STATUSNFE,t1.DTACANCELAMENTO DESC
Caso ainda tenha alguma duvida , poste o resultado de um top 10 da segunda query , por favor
Wesley Neves - Brasilia-DF
https://wesleyneves.wordpress.com/
MTA-SQL Server
MTA- Web Development
Analista Desenvolvedor.NET
Pós-Graduando em Banco de Dados
"Se a resposta for útil ou ajudar ,não esqueça de marcar"
Wesley Neves
- Sugerido como Resposta Junior Galvão - MVPMVP quinta-feira, 21 de setembro de 2017 00:42
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 25 de setembro de 2017 13:50
Todas as Respostas
-
Bom dia, Talvez seu problema seja no formado da data, vc deve passar no mesmo formato que está armazenado , ou seus parametros
Where estão inconsistentes , acredito que o trecho (AND t3.NUMERONF = t1.NUMERONF) é desnecessário
O que tem armazenado as colunas STATUSNFE,DTACANCELAMENTO,MOTIVOCANCELOU
faça alguns testes assim para saber se o seu where está correto
SELECT DISTINCT t1.NUMERONF , t1.NROEMPRESA , t1.STATUSNFE , t1.DTAEMISSAO , t1.DTASAIDA , t1.DTARECEBIMENTO , t1.DTAENTRADA , t1.DTACANCELAMENTO , t1.OBSERVACAOLF , t1.OBSERVACAO , t1.MOTIVOCANCELOU , t2.NOMERAZAO , t3.VLRITEM FROM MLF_NOTAFISCAL t1 INNER JOIN GE_PESSOA t2 ON t1.SEQPESSOA = t2.SEQPESSOA INNER JOIN MLF_NFITEM t3 ON t2.SEQPESSOA = t3.SEQPESSOA WHERE t3.NROEMPRESA = 90 --AND t3.NUMERONF = t1.NUMERONF AND t1.USUCANCELAMENTO IS NOT NULL AND t2.NOMERAZAO LIKE '%BOA%' AND DTAEMISSAO >= '01/01/2017';
e esse
SELECT DISTINCT t1.NUMERONF , t1.NROEMPRESA , t1.STATUSNFE , t1.DTAEMISSAO , t1.DTASAIDA , t1.DTARECEBIMENTO , t1.DTAENTRADA , t1.DTACANCELAMENTO , t1.OBSERVACAOLF , t1.OBSERVACAO , t1.MOTIVOCANCELOU , t2.NOMERAZAO , t3.VLRITEM FROM MLF_NOTAFISCAL t1 INNER JOIN GE_PESSOA t2 ON t1.SEQPESSOA = t2.SEQPESSOA INNER JOIN MLF_NFITEM t3 ON t2.SEQPESSOA = t3.SEQPESSOA WHERE t3.NROEMPRESA = 90 --AND t3.NUMERONF = t1.NUMERONF --AND t1.USUCANCELAMENTO IS NOT NULL AND t2.NOMERAZAO LIKE '%BOA%' AND DTAEMISSAO >= '01/01/2017' ORDER BY t1.STATUSNFE,t1.DTACANCELAMENTO DESC
Caso ainda tenha alguma duvida , poste o resultado de um top 10 da segunda query , por favor
Wesley Neves - Brasilia-DF
https://wesleyneves.wordpress.com/
MTA-SQL Server
MTA- Web Development
Analista Desenvolvedor.NET
Pós-Graduando em Banco de Dados
"Se a resposta for útil ou ajudar ,não esqueça de marcar"
Wesley Neves
- Sugerido como Resposta Junior Galvão - MVPMVP quinta-feira, 21 de setembro de 2017 00:42
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 25 de setembro de 2017 13:50
-
Lucas, bom dia
Também dê uma olhada no relacionamento do seu Inner join.. talvez você tenha outras chaves que não está passando como parâmetro.
Outra sugestão.. vejo que vc passa uma NFITEM e pode exitir notas (servico) que não tem item.. então recomendo que use LEFT JOIN ao inves do INNER JOIN.
Carlos Henrique Quadrado - Lençóis Paulista - SP - Brasil
ITIL v3 | ITMP |
Caso a resposta tenha sido útil clique em Votar. Caso a resposta tenha resolvido sua necessidade marque como Resposta.
Please use Vote As Helpful if a post was useful or use Marked as Answer if my post solved your necessity.
- Sugerido como Resposta Junior Galvão - MVPMVP quinta-feira, 21 de setembro de 2017 00:43
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 25 de setembro de 2017 13:50
-
Bom dia,
Por falta de retorno essa thread está encerrada.
Se necessário, favor abrir uma nova thread.
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.