Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FabianoSouza

Tratar exibição do percentual calculado

Recommended Posts

TEnho esse trecho que calcula e exibe o percentual.

Mas a coisa ainda tem uns "bugs".

...

LEFT(CASE WHEN A.anuncioRetorno = 0 OR A.anuncioContratacoes = 0 Then
0
ELSE
(cast(anuncioContratacoes as decimal) / cast(anuncioRetorno as decimal) ) * 100
END, 4) + '%'
AS  txAproveitamento 

Aparecem coisas como :

 

10.0% - seria melhor 10%

100.% - seria melhor sem o ponto sobrando

1.00% - seria melhor apenas 1%.

0.00% - seria melhor apenas 0%

 

E por aí vai...

Essa não é melhor forma de tratar. Mas foi aonde consegui chegar com meu pouco conhecimento.

 

Queria saber se alguém tem um código que faz a saída ficar bem formatado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Bom dia, Fabiano! Tranquilo?


dica 1 - Limite as casas decimais, ao invés de usar o left(,4) coloque (5,2) ma sua conversão, exemplo: cast(r2d2 as decimal(5,2)) ou convert(decimal(5,2),r2d2) isso acabará com o problema do 100.%, porém, você precisará converter pra string pra adicionar o caracter %. quanto ao problema de querer o percentual inteiro caso não contenha valores nas casas decimais... (pessoalmente eu não curto, prefiro tudo padronizado, todos os percentuais inteiros ou todos com duas casas decimais) você precisará de pequenos ajustes técnicos... sugiro que crie uma função


ex(não sei se o código a seguir vai funcionar pq no momento não tenho acesso ao sql pra testar, mas a ideia é essa):


create function dbo.fn_formatapercent (@valor varchar(10)) returns varchar(10)

as

begin

declare @retorno varchar(10)

set @retorno = case right(@valor,2) when '00' then convert(int,@valor)

else convert(varchar,@valor)

end +'%'


return @retorno+'%'


end


ou o segundo exemplo para a função já calcular a porcentagem.


create function dbo.fn_formatapercent (@valor1 decimal, @valor2 decimal) returns varchar(10)

as

begin

declare @retorno varchar(10), @valor varchar(10)

set @valor = (cast(@valor1 as decimal) / cast(@valor2 as decimal) ) * 100

set @retorno = case right(@valor,2) when '00' then convert(int,@valor)

else convert(varchar,@valor)

end



return @retorno+'%'

end



ai é só fazer a chamada da função no seu select.

Qualquer coisa, só entrar em contato.

Diémerson S. Campos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.