 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
valmirluis42 Novato

Registrado: Segunda-Feira, 17 de Agosto de 2015 Mensagens: 60
|
Enviada: Seg Jul 16, 2018 4:16 pm Assunto: Problemas com SQL Server |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Jul 16, 2018 8:24 pm Assunto: |
|
|
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 |
|
 |
valmirluis42 Novato

Registrado: Segunda-Feira, 17 de Agosto de 2015 Mensagens: 60
|
Enviada: Qua Jul 18, 2018 9:27 pm Assunto: |
|
|
resolvido , muito obrigado |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|