Aym*_*man 1 sql sql-server sql-server-2008
我想使用以下查询获取总金额
SELECT SUM(Quantity * UnitPrice * (Discount/100))
FROM Stock_Purchase_Details
Run Code Online (Sandbox Code Playgroud)
我的桌子结构
Proid | unitprice | discountrate(inpercentage) | proqty
1 | 10.00 | 10.00 | 10
2 | 10.00 | 10.00 | 10
Run Code Online (Sandbox Code Playgroud)
我希望总金额为20.00,但我使用的查询返回此结果20.00000000- 为什么?
注释描述得很好,结果是正确的,你可以做什么来获得你需要的格式的结果(只需将其转换为所需的数据类型:) CONVERT(decimal(5, 2), calculation).
为什么,我觉得,没有得到回答,这是你的实际问题.您将一个decimal(5, 2)带有integer.SQL服务器隐式注塑除数(100)股息(的数据类型decimal(5,2)),因为该数据类型必须匹配,并decimal采用优先级超过一个integer.除法的输出也是a decimal,但计算精度和比例.输出比例为max(6, scale of dividend + precision of divisor + 1)= max(6, 2 + 5 + 1).所以你最终得到的8是8个零.
事实上,最终的结果是DECIMAL(13, 8),完全是完整的.