これはクエリを動かすSQLエンジンのねじれです。異なる値を持つ複数の小数の桁数に対して計算(SUMなど)を実行する場合、値は共通のタイプに強制され、四捨五入されます。特に負の値は精度が落ちる可能性があり、実行するたびに異なるクエリ結果が得られる。
これを予防するには、計算の前にキャスト関数が実行されるように注文を調整することをお勧めします。
例えば、この条項は一貫性のない結果を生むかもしれない:
SELECT
CAST(SUM("XY"."X") AS DECIMAL(1,1)) AS "X"
しかし、この条項は毎回同じ結果を生む:
SELECT
SUM(CAST(("XY"."X") AS DECIMAL(1,1))) AS "X"