これは、私たちのクエリーを動かすSQLエンジンの癖です。異なる値を持つ複数の10進数型に対して計算(SUMなど)が実行される場合、値は共通の型に強制され、四捨五入される。特に負の値は、精度の低下を招き、実行するたびに異なるクエリ結果をもたらす可能性がある。
これを防ぐには、キャスト機能が計算の前に実行されるように注文を調整することをお勧めします。
例えば、この条項は一貫性のない結果を生むかもしれない:
select("xy". "x") as decimal(1,1) as "x")
cast(sum
しかし、この条項は毎回同じ結果を生む:
selectsum(cast(("xy".
"X")10進数(1,1))AS"X"