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