如何格式化%和2个小数点?

时间:2015-06-09 15:21:51

标签: sql sql-server sql-server-2008

如何将返回数据格式化为2位小数,格式为100.00%或67.39%,而不是100.000000或67.391304?

SUM(qa.scripting1+qa.conduct1+qa.conduct2+qa.conduct3)*100.0/46 as 'C%'

我试过ROUND()但是我收到错误声明圆函数需要2到3个参数?

ROUND(SUM(qa.scripting1+qa.conduct1+qa.conduct2+qa.conduct3)*100.0/46) as 'C%'

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以将原始值转换为小数:

CONVERT(VARCHAR(20), CONVERT(DECIMAL(18,2), SUM(qa.scripting1+qa.conduct1+qa.conduct2+qa.conduct3)*100.0/46) ) + '%' as 'C%'

十进制中的第一个数字表示数字中包含小数位数的位数,第二个数字表示小数位数。

答案 1 :(得分:0)

使用Round和Cast会有效。第一轮到2位小数,然后转换为带有2个位置的小数,以截断多余的零。

select cast(Round(yourValue, 2) as decimal(18,2))

Sql Fiddle

答案 2 :(得分:0)

您应该将第二个参数中的小数位数传递给round函数。对于格式化,您可以将数字转换为金钱,然后转换为varchar:

select cast(cast(ROUND(SUM(123.12321)*100.0/46, 2) as money) as varchar) + '%'

答案 3 :(得分:0)

您可以使用格式化功能

select FORMAT(100.0000, 'N' , 'en-us')

返回100.00

select FORMAT(67.391304, 'N' , 'en-us')

返回67.39

修改

在2012年以下的版本中,你可以这样做

 SELECT CAST(67.391304 AS NUMERIC(10, 2))

返回67.39