我正在尝试使用以下查询获取总金额
SELECT SUM(Quantity * UnitPrice * (Discount/100))
FROM Stock_Purchase_Details
我的表结构
Proid | unitprice | discountrate(inpercentage) | proqty
1 | 10.00 | 10.00 | 10
2 | 10.00 | 10.00 | 10
我希望总金额为20.00,但我使用的查询会返回此结果20.00000000
- 为什么会这样?
答案 0 :(得分:5)
评论描述得很好,结果是正确的,你可以做些什么来得到你需要的格式的结果(只需将其转换为所需的数据类型:CONVERT(decimal(5, 2), calculation)
)。
为什么,我觉得,没有得到回答,那是你的实际问题。
您将decimal(5, 2)
除以integer
。 SQL服务器隐式地将除数(100
)强制转换为被除数(decimal(5,2)
)的数据类型,因为数据类型必须匹配,而decimal
需要precedence超过{calculated 1}}。除法的输出也是integer
,但精度和比例是{{3}}。输出比例为decimal
= max(6, scale of dividend + precision of divisor + 1)
。因此,最终得分为max(6, 2 + 5 + 1)
,因此为8个零。
事实上,最终结果是8
,完全是完整的。
答案 1 :(得分:1)
SELECT CAST(SUM(Quantity * UnitPrice * (Discount/100)) AS DECIMAL(4,2))
FROM Stock_Purchase_Details