ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Problemas com SQL Server

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
valmirluis42
Novato
Novato


Registrado: Segunda-Feira, 17 de Agosto de 2015
Mensagens: 60

MensagemEnviada: Seg Jul 16, 2018 4:16 pm    Assunto: Problemas com SQL Server Responder com Citação

Estou aplicando o seguinte select para um relatório:
Código:
select
T.DATA,E.CODIGOMATERIAL,e.ORDEM,t.NUMEROMOVIMENTO,E.QUANTIDADE,E.TOTALITEM,G.CODIGOAUXILIAR,F.CANCELAMENTO,G.CODIGONCM,G.DESCRICAO,
o.ncm as ncmmono, coalesce(o.monofasico, 'NÃO') as monofasico  from PVMOVIMENTOITEM  as e
left join CADMATERIAL g on G.CODIGOMATERiAL= E.CODIGOMATERiAL
INNER JOIN MOVIMENTO  T ON E.ORDEM= T.ORDEMMOVIMENTO
inner join PVMOVIMENTONFC f on e.ORDEM=f.ORDEM outer apply
( SELECT n.NCM, n.MONOFASICO FROM NCM_MONOFASICOS as n where  n.Monofasico = 'sim' and G.CODIGONCM like n.NCM + '%'
) as o where f.cancelamento='N' AND  e.CODIGOTABELA1='101001' and E.DATAHORA between '2018-06-01' and '2018-06-30' 
 AND T.CODIGOALMOXARIFADO = '2001


e aquestão e a seguinte, nesse where :
Código:
where f.cancelamento='N'


ele trás tudo que não foi cancelado, mas preciso que ele traga apenas o que for N que não tenha sido cancelado, como mostra a imagem



o campo ORDEM OU NUMEROMOVIMENTO ele aparece como Não cancelado no Select com o where , mas foi cancelado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Jul 16, 2018 8:24 pm    Assunto: Responder com Citação

Boa noite

Acho que da forma como está a sua query o registro será retornado porque também existe um registro com o campo Cancelamento igual a 'N'.
Experimente fazer uns testes com a query que segue para ver se é obtido o resultado esperado:

Código:
select
    T.DATA,
    E.CODIGOMATERIAL,
    e.ORDEM,
    t.NUMEROMOVIMENTO,
    E.QUANTIDADE,
    E.TOTALITEM,
    G.CODIGOAUXILIAR,
    'N' as CANCELAMENTO,
    G.CODIGONCM,
    G.DESCRICAO,
    o.ncm as ncmmono,
    coalesce(o.monofasico, 'NÃO') as monofasico 
from PVMOVIMENTOITEM as e
left join CADMATERIAL g on G.CODIGOMATERiAL = E.CODIGOMATERiAL
INNER JOIN MOVIMENTO T ON E.ORDEM = T.ORDEMMOVIMENTO
outer apply
(
    SELECT
        n.NCM,
        n.MONOFASICO
    FROM NCM_MONOFASICOS as n
    where
        n.Monofasico = 'sim' and
        G.CODIGONCM like n.NCM + '%'
) as o
where
    e.CODIGOTABELA1 = '101001' and
    E.DATAHORA between '2018-06-01' and '2018-06-30' AND
    T.CODIGOALMOXARIFADO = '2001' and
    not exists
        (select 1
         from PVMOVIMENTONFC f
         where
             f.ORDEM = e.ORDEM and
             f.cancelamento = 'S')


Espero que ajude


Editado pela última vez por imex em Ter Out 03, 2023 2:58 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
valmirluis42
Novato
Novato


Registrado: Segunda-Feira, 17 de Agosto de 2015
Mensagens: 60

MensagemEnviada: Qua Jul 18, 2018 9:27 pm    Assunto: Responder com Citação

resolvido , muito obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB