Número do formato como percentagem no servidor de MS SQL

estou a tentar formatar um número como um por cento com duas casas decimais. Se for 37 dividido por 38 (também conhecido por .973684210526315789), gostaria que mostrasse 97,36 % na produção de SQL. Eu sei que é recomendado para fazer a formatação na aplicação, no entanto isto é para uma exportação automatizada. Isto está usando o servidor SQL 2008.

Eis o que tenho agora:
select CONVERT(VARCHAR(50),cast(37 as decimal)/cast(38 as decimal)*100)+' %' AS [%]

se pudesse explicar quais são os vários parâmetros em qualquer função que fosse útil.

Author: user3513237, 2015-05-07

4 answers

A resposta de M. Ali pode ser modificada como
select Cast(Cast((37.0/38.0)*100 as decimal(18,2)) as varchar(5)) + ' %' as Percentage
 24
Author: Sharad, 2015-05-07 10:11:38

Em SQL Server 2012 e mais tarde, há a FORMAT() função. Pode passar-lhe um parâmetro 'P' para a percentagem. Por exemplo:

SELECT FORMAT((37.0/38.0),'P') as [Percentage] -- 97.37 %

A suporta a precisão decimal percentual , pode usar P0 para nenhuma casa decimal (números inteiros) ou P3 para 3 casas decimais (97.368%).

SELECT FORMAT((37.0/38.0),'P0') as [WholeNumberPercentage] -- 97 %
SELECT FORMAT((37.0/38.0),'P3') as [ThreeDecimalsPercentage] -- 97.368 %
 55
Author: jbeldock, 2017-09-20 15:41:37
SELECT cast( cast(round(37.0/38.0,2) AS DECIMAL(18,2)) as varchar(100)) + ' %'

RESULT:  0.97 %
 4
Author: M.Ali, 2015-05-06 23:47:04

E para todas as versões SQL Server

SELECT CAST(0.973684210526315789 * 100 AS DECIMAL(18, 2))
 2
Author: sqluser, 2015-05-07 03:49:03