這是為我們的查詢提供動力的 SQL 引擎的怪癖。當計算 (例如 SUM) 在多個具有不同值的十進位類型上執行時,這些值會被強制轉換為共用類型並進位。特別是負值可能會導致精確度的損失 -- 每次執行都會產生不同的查詢結果。
為了避免這種情況,我們建議調整您的順序,以便在計算之前執行轉換函數。
例如,此條款可能會產生不一致的結果:
SELECT
CAST(SUM("XY"."X") AS DECIMAL(1,1)) AS "X"
但此語句每次都會產生相同的結果:
SELECT
SUM(CAST(("XY"."X") AS DECIMAL(1,1))) AS "X"