SQL Server:舍入并添加百分号

时间:2014-02-17 05:26:57

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

我有以下SQL查询返回92.967013425802的结果,我需要将其格式化为93%并添加百分号。我已经尝试将总和更改为圆形但我收到错误

  

函数'round'不是有效的窗口函数,不能与OVER子句一起使用。

我的查询:

select 
    count(*) * 100.0 / sum(count(*)) over()
from 
    db_table_MetaData
group by 
    MetaValue
order by 
    MetaValue

任何帮助都将不胜感激。

6 个答案:

答案 0 :(得分:2)

select 
    --Cast(Round(count(*) * 100.0 / sum(count(*)), 0) as nvarchar(5) + '%' 
      CAST(Round(count(*) * 100.0 / sum(count(*)), 0) as nvarchar(5)) + '%'
from 
    db_table_MetaData

这应该可以解决问题。

从本质上讲,您可以使用08/15 ROUND()函数来获取数值。在此之后,您将其转换为nvarchar(x)并在字符串中添加一个字符串。但是我现在没有检查语法的方法。

答案 1 :(得分:1)

奇怪你没有一个有效的功能。也许你没有提供正确的参数?

这对我有用。

select cast(Round('92.967013425802', 0) as nvarchar(10)) + '%'

答案 2 :(得分:0)

我不知道真正的问题是什么,但是当我尝试以下查询时,它运行正常。可能是您的查询出现错误的括号,

select 
MetaValue, round(count(*) * 100.0 / sum(count(*)) over(),0)
from db_table_MetaData
group by MetaValue
order by MetaValue

检查它是否在SQL Fiddle工作:http://www.sqlfiddle.com/#!3/55c82/3

答案 3 :(得分:0)

回答(count(*)* 100.0 / sum(count(*))over(),1)

答案 4 :(得分:0)

我会使用带参数'p'的FORMAT函数:

SELECT FORMAT(50.019/100.0,'p') as [Percentage]

这会给你一个圆润的结果,如:

Percentage
50.02 %

检查MSDN以获取更多信息:
https://msdn.microsoft.com/de-de/library/hh213505.aspx

答案 5 :(得分:0)

select 
CONCAT(count(*) * 100.0 / sum(count(*)), '%') AS Percentage
from 
    db_table_MetaData
group by 
    MetaValue
order by 
    MetaValue