Conversão de campos zerados para campos vazios
Estou fazendo um relatório cujo comando é:
As colunas de Devolução, Pis, Cofins e Icms, caso estejam com os valores zerados (0), preciso converter para vazio, para ficar com o campo em branco. Como posso fazer essa conversão?
select
YEAR (t.data) 'ANO',
MONTH(T.DATA) 'MÊS',
o.CODVEND1 'CODIGO VENDEDOR',
v.VENDEDOR 'NOME VENDEDOR',
p.CODGRUP 'GRUPO PRODUTO',
g.DESCRICAO 'DESCRICAO GRUPO',
o.CODPROD 'CODIGO PRODUTO',
p.DESCPROD 'DESCRICAO PRODUTO',
t.CODCLIFOR 'CODIGO CLIENTE',
c.NOME 'NOME CLIENTE',
t.CODTRANSACAO 'CODIGO TRANSACAO',
t.NOTA 'NF-E',
o.CODNATU 'CFOP',
case when o.CODNATU NOT in ('1201','2201') then o.VLRAFATURAR
else 0 end 'RECEITA',
case when o.CODNATU in ('1201','2201') then o.VLRAFATURAR
else 0 end 'DEVOLUÇÃO',
case when o.CODNATU in ('1201','2201') then O.VLRPIS * -1
else O.VLRPIS end 'PIS',
case when o.CODNATU in ('1201','2201') then O.VLRCOFINS * -1
else O.VLRCOFINS end 'COFINS',
case when o.CODNATU in ('1201','2201') then O.VLRICMS * -1
else O.VLRICMS end 'ICMS'
from ORDTRANS O inner join TRANSACAO T on o.codtransacao=t.codtransacao
inner join PRODUTO P on o.codprod=p.CODPROD
inner join UNIDADE U on u.CODUNID=p.CODUNID
inner join CLIFOR C on c.CODCLIFOR=t.CODCLIFOR
inner join ORDSALDO S on s.CODORDTRANS=o.CODORDTRANS
INNER JOIN GRUPPROD G on g.CODGRUP=p.CODGRUP
left join V_VENDEDOR V on v.CODVEND1=o.CODVEND1
where t.DATA between '01/01/2023' and '30/11/2023'
AND t.SITUACAO=3
AND o.CODNATU in ('1201','2201','5101', '5101A', '5101C', '5101CI', '5101P', '5102','5116', '5124', '5124A', '5125','6116', '6101P')
order by t.NOTA
As colunas de Devolução, Pis, Cofins e Icms, caso estejam com os valores zerados (0), preciso converter para vazio, para ficar com o campo em branco. Como posso fazer essa conversão?
Mylena
Curtidas 0
Respostas
Arthur Heinrich
15/12/2023
Você pode alterar sua expressão de:
para:
Já nos casos mais complicados, precisa usar da criatividade:
De:
para:
case when o.CODNATU in ('1201','2201') then o.VLRAFATURAR else 0 end 'DEVOLUÇÃO',
para:
case when o.CODNATU in ('1201','2201') then o.VLRAFATURAR else NULL end 'DEVOLUÇÃO',
Já nos casos mais complicados, precisa usar da criatividade:
De:
case when o.CODNATU in ('1201','2201') then O.VLRPIS * -1 else O.VLRPIS end 'PIS',
para:
case
when O.VLRPIS = 0 then cast(NULL as decimal(16,2))
when o.CODNATU in ('1201','2201') then O.VLRPIS * -1
else O.VLRPIS
end 'PIS',
GOSTEI 0
Mylena
15/12/2023
Muito obrigada
GOSTEI 0