如何更正此 T-SQL 语法以获得没有小数位的输出?
How to correct this T-SQL syntax to get an output with no decimal places?
我正在使用 SQL Server 2016,我的查询中有以下 T-SQL 代码:
CAST(ROUND([Count of Bookings] * 100.0 / SUM([Count of Bookings]) OVER (PARTITION BY [Market Final], [PropertyCode]), 0) AS NVARCHAR(15)) + '%'
此代码的当前输出示例为:40.000000000000%
我期望输出为:40%
注意(我不知道这是否相关):如果我将 nvarchar(x)
中的数字更改为小于 15,我会收到以下错误:
Arithmetic overflow error converting expression to data type nvarchar.
ROUND()
函数的任何输入的 return 类型取决于输入数据类型,如您在 MSDN 中所见。
这会导致您的 ROUND()
变为 return 带小数点的数据类型(在此计算中为 float
),您必须在转换为 [=13 后将其截断=](或将其转换为 int
之前)。
使用str()
代替cast()
:
str(round([Count of Bookings] * 100.0 /
sum([Count of Bookings]) over(PARTITION BY [Market Final], [PropertyCode]
) , 0), 3, 0) + '%'
实际上,我认为默认情况下 str()
轮(文档在这个问题上是否还不够清楚?):
str([Count of Bookings] * 100.0 /
sum([Count of Bookings]) over (PARTITION BY [Market Final], [PropertyCode]
), 3, 0) + '%'
我正在使用 SQL Server 2016,我的查询中有以下 T-SQL 代码:
CAST(ROUND([Count of Bookings] * 100.0 / SUM([Count of Bookings]) OVER (PARTITION BY [Market Final], [PropertyCode]), 0) AS NVARCHAR(15)) + '%'
此代码的当前输出示例为:40.000000000000%
我期望输出为:40%
注意(我不知道这是否相关):如果我将 nvarchar(x)
中的数字更改为小于 15,我会收到以下错误:
Arithmetic overflow error converting expression to data type nvarchar.
ROUND()
函数的任何输入的 return 类型取决于输入数据类型,如您在 MSDN 中所见。
这会导致您的 ROUND()
变为 return 带小数点的数据类型(在此计算中为 float
),您必须在转换为 [=13 后将其截断=](或将其转换为 int
之前)。
使用str()
代替cast()
:
str(round([Count of Bookings] * 100.0 /
sum([Count of Bookings]) over(PARTITION BY [Market Final], [PropertyCode]
) , 0), 3, 0) + '%'
实际上,我认为默认情况下 str()
轮(文档在这个问题上是否还不够清楚?):
str([Count of Bookings] * 100.0 /
sum([Count of Bookings]) over (PARTITION BY [Market Final], [PropertyCode]
), 3, 0) + '%'