Jest to dziwactwo silnika SQL, który obsługuje nasze zapytania. Gdy obliczenia (takie jak SUMA) są wykonywane na wielu typach dziesiętnych o różnych wartościach, wartości są zaokrąglane do wspólnego typu. W szczególności wartości ujemne mogą powodować utratę precyzji - i dawać różne wyniki zapytań przy każdym uruchomieniu.
Aby temu zapobiec, zalecamy dostosowanie zamówienia tak, aby funkcja rzutowania była wykonywana przed obliczeniami.
Na przykład klauzula ta może dawać niespójne wyniki:
SELECT
CAST(SUM("XY". "X") AS DECIMAL(1,1)) AS "X"
Ale ta klauzula za każdym razem da ten sam rezultat:
SELECT
SUM(CAST(("XY"."X") AS DECIMAL(1,1))) AS "X"