这是我们查询所使用的 SQL 引擎的一个特性。当对多个具有不同值的十进制类型执行计算(例如求和)时,这些值会被强制转换为公共类型并进行四舍五入。特别是负值可能会导致精度损失,并且每次运行都会产生不同的查询结果。
为防止这种情况发生,我们建议您调整订单,以便在计算之前执行类型转换函数。
例如,该条款可能导致不一致的结果:
SELECT
CAST(SUM("XY"."X") AS DECIMAL(1,1)) AS "X"
但这条条款每次都会产生相同的结果:
SELECT
SUM(CAST(("XY"."X") AS DECIMAL(1,1))) AS "X"