SQL SERVER - JOIN COM IS NOT NULL

CLEVERTON 08/04/2016 21:34:51
#460785
Pessoal, Como Resolvo essa equação.
No Campo VendasCab eu armazeno [Ô]E[Ô], [Ô]S[Ô] e NULL

e quero pegar somente os campos que não contiverem NULL em VendasCab.TipoMovimento

SELECT P.CodBarra, P.CodEmpresa, P.Nome AS Produto, P.Venda AS Valor, M.Nome AS Marca, F.Nome AS Familia, SUM(vDet.Qtd) AS Estoque
FROM dbo.VendasDet AS vDet INNER JOIN
dbo.VendasCab AS VC ON vDet.CodigoCab = VC.Codigo RIGHT OUTER JOIN
dbo.Produtos AS P INNER JOIN
dbo.ProdutosMarcas AS M ON P.CodMarca = M.Codigo INNER JOIN
dbo.ProdutosFamilia AS F ON P.CodFamilia = F.Codigo ON vDet.CodigoProduto = P.Codigo
WHERE (vDet.Cancelado IS NULL) AND (P.Nome LIKE [ô]%O%[ô]) AND (VC.TipoMovimento IS NOT NULL)
GROUP BY P.Codigo, P.CodBarra, P.CodEmpresa, P.Nome, P.Venda, M.Nome, F.Nome
ORDER BY Produto
JCM0867 08/04/2016 23:13:08
#460789
será que esse [Ô]RIGHT OUTER JOIN[Ô] tem algo haver
Alias u nem conheço [Ô]RIGHT OUTER JOIN[Ô], conheço [Ô]RIGHT JOIN[Ô]
Vê se a imagem te ajuda
CLEVERTON 09/04/2016 08:05:28
#460792
O Problema está na seguinte situação, se eu remover vendasCab da consulta, eu consigo trazer o NULL que vem do SUM(campo)

Mas quando coloco ela, já tem esse criterio adicionacional ( TipoMovimento IS NOT NULL ), ai não consigo trazer a linha.

CLEVERTON 09/04/2016 10:02:01
#460794
Resolvi usando uma POG, mas vou deixar em aberto, caso alguém me ajude com a solução correta kkkkk

SELECT P.Codigo, P.CodBarra, P.CodEmpresa, P.Nome AS Produto, P.Venda AS Valor, M.Nome AS Marca, F.Nome AS Familia, ISNULL(SUM(vDet.Qtd), 0) AS Estoque, MAX(VC.Codigo) AS POG
FROM dbo.VendasDet AS vDet LEFT OUTER JOIN
dbo.VendasCab AS VC ON vDet.Codigo = VC.Codigo RIGHT OUTER JOIN
dbo.Produtos AS P INNER JOIN
dbo.ProdutosMarcas AS M ON P.CodMarca = M.Codigo INNER JOIN
dbo.ProdutosFamilia AS F ON P.CodFamilia = F.Codigo ON vDet.CodigoProduto = P.Codigo
WHERE (vDet.Cancelado IS NULL)
GROUP BY P.Codigo, P.CodBarra, P.CodEmpresa, P.Nome, P.Venda, M.Nome, F.Nome
ORDER BY Produto
JCM0867 09/04/2016 10:18:19
#460795
Não daria para fazer uma segunda query (delete) para tirar os NULL?
CLEVERTON 09/04/2016 10:24:26
#460796
já estava assim. mas a performance é um lixo.
FFCOUTO 11/04/2016 08:45:23
#460852
Não se ajuda. Mas inverta o NOT da expressão:
(VC.TipoMovimento IS NOT NULL)

por
(NOT (VC.TipoMovimento IS NULL))

ACCIOLLY 11/04/2016 08:58:12
#460853
Faz um banco igual no access, depois crie uma consulta em modo design. Quando estiver pronto peça pra mostrar o SQL
CLEVERTON 11/04/2016 09:00:59
#460855
FFCOUTO, não funfou não

SELECT P.Nome, SUM(vDet.Qtd) AS Qtd
FROM VendasCab AS VC INNER JOIN
VendasDet AS vDet ON VC.Codigo = vDet.CodigoCab RIGHT JOIN
Produtos AS P ON vDet.CodigoProduto = P.Codigo
WHERE (NOT (VC.TipoMovimento IS NULL))
GROUP BY P.Nome.


CLEVERTON 11/04/2016 09:02:23
#460856
Citação:

:
Faz um banco igual no access, depois crie uma consulta em modo design. Quando estiver pronto peça pra mostrar o SQL




NO SQL Server também tem isso.
A consulta era cruzando duas views, mas o desempenho online não ficou muito bom.
FFCOUTO 11/04/2016 11:36:23
#460872
Citação:

No Campo VendasCab eu armazeno [Ô]E[Ô], [Ô]S[Ô] e NULL



Bom. Se você só armazena esses três valores basta você usar o operador IN para buscar os valores com [Ô]E[Ô] e [Ô]S[Ô].
Assim:
(VC.TipoMovimento IN ([ô]E[ô], [ô]S[ô]))


Acredito que vá resolver seu problema.
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas