Existe algum comando no SQL Server que traga informação do mesmo campo quando o mesmo contem informaçoes nulas e não nulas

18/06/2015

Tenho um relatório onde preciso que o mesmo me traga somente as informações do campo quando ele estiver nulo e a opção em cartório, este campo possui as opções Null, Em Cartorio, Protestado, Jurídico e Aviso Sacado. Eu fiz o seguinte comando porem não dá certo
SELECT P.ParcDocFinDupNum, P.ParcDocFinDesmPag, P.ParcDocFinDataEmissao, VE.VendCod,
P.ParcDocFinDataVenc, P.BcoNum, P.TipoCobCod, P.ParcDocFinValOrig, E.EntStatDescr,
P.ParcDocFinSeq, D.EntCod, D.DocFinSerie, D.EmpCod, D.DocFinTipoLanc,SE.StatEntDescrSist,
D.DocFinProjecao, D.DocFinChv, P.EmpCod,ParcDocFinDataProrrog, P.USERParcDocFinSituacao
FROM DOC_FIN D With(NoLock), PARC_DOC_FIN P With(NoLock), Entidade E With(NoLock),
STAT_ENT SE With(NoLock), Vend_Ent VE With(Nolock)
WHERE D.EmpCod = '1'--:Empresa
AND D.DocFinTipoLanc = 'REC'
AND D.DocFinProjecao = 'Não'
AND P.DocFinChv = D.DocFinChv
AND P.EmpCod = D.EmpCod
AND D.EntCod = E.EntCod
AND E.StatEntCod = SE.StatEntCod
AND E.EntCod = VE.EntCod
AND P.ParcDocFinDataPag IS NULL
AND (P.ParcDocFinDataProrrog >= '2000-01-01'
AND P.ParcDocFinDataProrrog <= '2015-06-18')
And P.USERParcDocFinSituacao in ('Em Cartorio', 'is null')
ORDER BY VE.VendCod, D.EntCod, D.EmpCod, P.ParcDocFinDataVenc

Melangel

Melhor resposta

19/06/2015

Mais uma vez obrigada pelas dicas e ajudar o comando era exatamente isso
 And(P.USERParcDocFinSituacao is NULL or P.USERParcDocFinSituacao = 'Em Cartório')


Que bom que funcionou, mas vale lembrar que campos string (char o varchar) podem ser NULL ou '' (branco), então talvez você deva ser preocupar com este fato.

Isto pode ser contornado com:

And(ISNULL(P.USERParcDocFinSituacao,'')  = '' or P.USERParcDocFinSituacao = 'Em Cartório')


Agora se você tive certeza que o conteúdo será sempre NULL pode deixar com a condição que você criou.

Jothaz

Responder Citar

Outras Respostas

18/06/2015

Marcos P

Sempre que postar código no fórum, utilize a tag ( Inserir Código ), facilita a leitura !

Não entendi exatamente seu problema...

Você precisa que exista um tratamento de campo NULL, substituindo esse valor por outro qualquer. É isso ?

Se for, pesquise sobre a função ISNULL().

Caso seu problema seja desprezar no WHERE valores null em determinada coluna, faça :
WHERE coluna is not null

Senão for nada disso, detalhe melhor seu problema...
Responder Citar

18/06/2015

Jothaz

Quando for postar um código use as tags "</>" clicando no ícone a esquerda, ajuda muito na leitura.

Veja se o script abaixo ajuda a entender como usar o IS NULL, IS NOT NULL e ISNULL:

declare  @tab table (id int, nome varchar(10))

insert into @tab (id , nome) values (1,'zzzzz')
insert into @tab (id , nome) values (2,null)
insert into @tab (id , nome) values (3,'')
insert into @tab (id , nome) values (4,'eeeeee')
insert into @tab (id , nome) values (5,null)
insert into @tab (id , nome) values (6,'pppppp')
insert into @tab (id , nome) values (7,'')
insert into @tab (id , nome) values (8,'lllll')
insert into @tab (id , nome) values (8,null)

select * 
from @tab 

select * 
from @tab 
where nome is null or  nome = ''

select * 
from @tab 
where nome is not null and  nome <> ''

select * 
from @tab 
where isnull(nome,'') = ''

select * 
from @tab 
where isnull(nome,'') <> ''


Note que NULL é diferente de ''.

Qualquer dúvida é só se manifestar!
Responder Citar

19/06/2015

Melangel

Oi não é isto que preciso na visualização do SQL precisa ver todas as informações do campo onde o valor for = a nulo e que também consiga visualizar o que for Cartório as outras informações do campo não quero visualizar. Só que precisa ver no mesmo retorno.
Exemplo tenho a parcela 8512- A que o campo UserSituação é Nulo e a parcela 8615-B o campo esta Em cartório. Preciso que ao gerar o relatório me traga esta duas informações juntas, pois eu só consigo fazer separadas, o que preciso seria como se fosse o comando
P.USERParcDocFinSituacao in('Em Cartorio', 'Protestado')
só que quando é um campo nulo este comando não funciona. Não sei se fui clara.
Responder Citar

19/06/2015

Guilherme

Ai meu querido, tente fazer assim

P.USERParcDocFinSituacao in(NULL, 'Em Cartorio', 'Protestado')
Responder Citar

19/06/2015

Guilherme

Mas atenção, campo Nulo não é string vazia. Se no campo de seu banco de ddos estiver com string vazia não retornará, então recomendo incluir ('') na clausula de conjunto de valores.

P.USERParcDocFinSituacao in(NULL, '', 'Em Cartorio', 'Protestado')
Responder Citar

19/06/2015

Jothaz

Mas atenção, campo Nulo não é string vazia. Se no campo de seu banco de ddos estiver com string vazia não retornará, então recomendo incluir ('') na clausula de conjunto de valores.
P.USERParcDocFinSituacao in(NULL, '', 'Em Cartorio', 'Protestado')


No script que postei contempla este caso use
  isnull(seu-campo,'') 

porque vai trocar o valores nulos (NULL) por '' (branco) ai é comparar com ''.
Responder Citar

19/06/2015

Melangel

Gente obrigada pela ajuda, mas não é nenhum desses comandos. O problema é que meu campo não é branco ele é 'null', 'Em Cartorio', Protestado', 'Aviso', 'Juridico'. Qualquer dos comandos que eu utilizar ele não me mostra na visualização as duas opções que eu quero visualizar. Ou ele traz só null ou só em cartório. Mesmo assim eu agradeço a todos por tentar me ajudar. abraços.
Responder Citar

19/06/2015

Jothaz

Caso tenha disponibilidade use o sqlfiddle e crie um base de dados de exemplo com o sql que você esta usando.

Fica mais fácil o entendimento e ajuda.

Mas é só uma sugestão.
Responder Citar

19/06/2015

Melangel

vou fazer isto, obrigada.
Responder Citar

19/06/2015

Jothaz

vou fazer isto, obrigada.


Sei que pode ser trabalhoso, mas criando uma base de testes certamente vai facilitar a ajuda e a ajuda será mais eficaz!
Responder Citar

19/06/2015

Melangel

Mais uma vez obrigada pelas dicas e ajudar o comando era exatamente isso
 And(P.USERParcDocFinSituacao is NULL or P.USERParcDocFinSituacao = 'Em Cartório')
Responder Citar

19/06/2015

Fabiano Carvalho

Função ISNULL ou COALESCE
Responder Citar