Existe algum comando no SQL Server que traga informação do mesmo campo quando o mesmo contem informaçoes nulas e não nulas
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
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
Marta Silva
Curtidas 0
Melhor post
Jothaz
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.
GOSTEI 1
Mais Respostas
Marcos P
18/06/2015
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 :
Senão for nada disso, detalhe melhor seu problema...
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...
GOSTEI 0
Jothaz
18/06/2015
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:
Note que NULL é diferente de ''.
Qualquer dúvida é só se manifestar!
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!
GOSTEI 0
Marta Silva
18/06/2015
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 só que quando é um campo nulo este comando não funciona. Não sei se fui clara.
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')
GOSTEI 0
Guilherme
18/06/2015
Ai meu querido, tente fazer assim
P.USERParcDocFinSituacao in(NULL, 'Em Cartorio', 'Protestado')
GOSTEI 0
Guilherme
18/06/2015
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')
GOSTEI 0
Jothaz
18/06/2015
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 ''.
GOSTEI 0
Marta Silva
18/06/2015
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.
GOSTEI 0
Jothaz
18/06/2015
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.
Fica mais fácil o entendimento e ajuda.
Mas é só uma sugestão.
GOSTEI 0
Marta Silva
18/06/2015
vou fazer isto, obrigada.
GOSTEI 0
Jothaz
18/06/2015
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!
GOSTEI 0
Marta Silva
18/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')
GOSTEI 0
Fabiano Carvalho
18/06/2015
Função ISNULL ou COALESCE
GOSTEI 0