我正在尝试使用以下查询获取总金额
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
——为什么?
注释很好地描述了结果是正确的,以及您可以做些什么来获得所需格式的结果(只需将其转换为所需的数据类型:CONVERT(decimal(5, 2), calculation)
)。
我觉得为什么没有得到回答,这是你真正的问题。您正在用integer
划分decimal(5, 2)
。SQL server将除数(100
)隐式转换为被除数的数据类型(decimal(5,2)
),因为数据类型必须匹配,并且decimal
优先于integer
。除法的输出也是decimal
,但精度和比例是经过计算的。输出比例为max(6, scale of dividend + precision of divisor + 1)
=max(6, 2 + 5 + 1)
。所以你最终得到了一个8
的刻度,因此得到了8个零。
事实上,最终的结果是一个DECIMAL(13, 8)
,是完全完整的。
SELECT CAST(SUM(Quantity * UnitPrice * (Discount/100)) AS DECIMAL(4,2))
FROM Stock_Purchase_Details