我有以下SQL查询返回92.967013425802
的结果,我需要将其格式化为93%
并添加百分号。我已经尝试将总和更改为圆形但我收到错误
函数'round'不是有效的窗口函数,不能与OVER子句一起使用。
我的查询:
select
count(*) * 100.0 / sum(count(*)) over()
from
db_table_MetaData
group by
MetaValue
order by
MetaValue
任何帮助都将不胜感激。
答案 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