SQL Server中的百分比计算

SQL Server中的百分比计算,sql,sql-server,percentage,Sql,Sql Server,Percentage,我有列RSL和sumofsl。我尝试过计算百分比,但它返回100%或0%。在某些情况下,这是一个错误的计算,因为它显示为0%。以下是供您参考的示例 RSL SUMofRSL Percentage ------------------------------ 2 2 100% 1 2 0% 48 96 0% 10 10 100% 我用过 (

我有列
RSL
sumofsl
。我尝试过计算百分比,但它返回100%或0%。在某些情况下,这是一个错误的计算,因为它显示为0%。以下是供您参考的示例

RSL     SUMofRSL    Percentage
------------------------------
 2          2         100%
 1          2           0%
48         96           0%
10         10         100%
我用过

([RSL] / [SumOfRSL]) * 100

假设
RSL
sumofsl
的数据类型是整数,则需要将列转换为支持小数点的数据类型

例如:-

(CAST([RSL] AS DECIMAL(10, 4)) / CAST([SumOfRSL] AS DECIMAL(10, 4)))

假设
RSL
sumforsl
的数据类型是整数,则需要将列转换为支持小数点的数据类型

例如:-

(CAST([RSL] AS DECIMAL(10, 4)) / CAST([SumOfRSL] AS DECIMAL(10, 4)))

两个整数因子的除法将是另一个整数。如果希望结果为十进制,则至少有一个因子必须为十进制类型。(见此)


您可以按照凯恩的建议对一个或两个值进行强制转换。

两个整数因子的除法将是另一个整数。如果希望结果为十进制,则至少有一个因子必须为十进制类型。(见此)


您可以按照凯恩的建议强制转换一个或两个值。

请尝试
[RSL]*100/[sumofsl]
以避免在相乘之前将整数截断为0。您的列是什么数据类型?如果您有
INT
值,那么您正在执行INT除法-它不返回任何分数值-您需要使用
([RSL]*1.0/[sumofsl])*100.0
将这些值转换为
十进制
,从而获得分数值stry
[RSL]*100/[sumofsl]
避免整数在相乘前被截断为0。列的数据类型是什么?如果您有
INT
值,您正在执行INT除法-它不返回任何分数值-您需要使用
([RSL]*1.0/[sumofsl])*100.0
将这些值转换为
十进制
,以便获得分数值