sql 乘法未正确显示总数

sql multiplication don't show properly total


脚本中有奇怪的乘法。

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时,折扣总是不正确。
我不确定我必须做什么才能让它一直有效。

问题是带有折扣列的这个 table 是从 excel 文件导入到 sql 服务器的。
由于某种原因,折扣列不是十进制。
所有列都包含 0.0015、0.010 等数字...
当我将 Discount 的列数据类型更改为 decimal(10.4) 时,一切都开始正常工作。
但是问题还是来了,为什么大于 100 的数字有效而小于 100 的数字无效?