Fórum Conversão de campos zerados para campos vazios #620851
15/12/2023
0
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?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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
Curtir tópico
+ 0
Responder
Posts
15/12/2023
Arthur Heinrich
Você pode alterar sua expressão de:
para:
Já nos casos mais complicados, precisa usar da criatividade:
De:
para:
1 | case when o.CODNATU in ('1201','2201') then o.VLRAFATURAR else 0 end 'DEVOLUÇÃO', |
para:
1 | 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:
1 | case when o.CODNATU in ('1201','2201') then O.VLRPIS * -1 else O.VLRPIS end 'PIS', |
para:
1 2 3 4 5 | 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
Gostei + 0
15/12/2023
Mylena
Muito obrigada
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)