sql乘法不能正确显示总计

时间:2019-12-19 09:24:06

标签: sql tsql casting multiplication


脚本中有一个奇怪的乘法。

SUM(CAST(PurchLine.[Amount Including VAT]   AS decimal(10,2))) 
OVER(PARTITION BY PurchLine.[Document No_])AS "TotalAmount"

从上方查找总金额。

TotalAmount * TotalAmount * Discount AS PaymentAmount

从以上查找折扣和最终付款金额。

例如我有24.80 *(24.80 * 0.015)= 24.42
取而代之的是我得到24.30。
同样对于折扣24.80 * 0.015 = 49.60,这又是不正确的。正确的结果应该是0.372

但是奇怪的是,这仅在TotalAmount小于3位数字时才起作用。
当总金额低于100时,折扣总是不正确。
我不确定该怎么做,所以它会一直工作。

1 个答案:

答案 0 :(得分:0)

问题是带有“折扣”列的此表已从excel文件导入到sql服务器中。
由于某种原因,“折扣”列不是十进制。
所有列均包含0.0015、0.010等数字...
当我将“折扣”的列数据类型更改为小数(10.4)时,一切开始正常运行。
但这仍然是一个问题,为什么对大于100且小于100的数字不起作用?