Conversão de campos zerados para campos vazios

15/12/2023

0

Estou fazendo um relatório cujo comando é:

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

Mylena

Responder

Posts

15/12/2023

Arthur Heinrich

Você pode alterar sua expressão de:

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',

Responder

15/12/2023

Mylena

Muito obrigada
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar