我有一张表格,其中包括:
COUNT RISK
35 0.6456000000
11 0.5234000000
4 0.8431000000
我需要一列来乘以两列。但是我得到的结果是:
TOTAL
35
11
4
COUNT - INT
RISK - VARCHAR
SQL显然将小数点四舍五入为1.我尝试将十进制数字转换为数字并乘以1.0。我需要保留小数以进行实际计算。任何帮助都会很棒
答案 0 :(得分:2)
将结果转换为十进制,如此
SELECT
CONVERT(DECIMAL(16,10), COUNT * RISK) AS DecimalResult
FROM dbo.whatever;
或将COUNT转换为十进制
SELECT CAST(COUNT AS DECIMAL(16,10)) * RISK
答案 1 :(得分:2)
这个问题真的很可疑。从表面看,似乎两列[Count]和[Risk]具有不同的数据类型,[Count]为整数,[Risk]为decimal或float。 根据BOL,十进制/浮点数据类型具有更高的优先级,我将在此处引用BOL
当运算符组合了两种不同数据类型的表达式时,数据类型优先级的规则指定具有较低优先级的数据类型转换为具有较高优先级的数据类型。如果转换不是受支持的隐式转换,则会返回错误。当两个操作数表达式具有相同的数据类型时,操作的结果具有该数据类型
对我来说,在 SQL Server 中,当你做
时Select [Total]=[Count]*[Risk] from [your_table]
您无法获得原始问题中显示的结果。