Si tratta di una stranezza del motore SQL che alimenta le nostre query. Quando un calcolo (come la SOMMA) viene eseguito su più tipi di decimali con valori diversi, i valori vengono forzati a un tipo comune e arrotondati. I valori negativi, in particolare, possono causare una perdita di precisione e produrre risultati diversi a ogni esecuzione.
Per evitare che ciò accada, ti consigliamo di modificare l'ordine in modo che la funzione di cast venga eseguita prima del calcolo.
Ad esempio, questa clausola può produrre risultati incoerenti:
SELECT
CAST(SUM("XY". "X") AS DECIMAL(1,1)) AS "X"
Ma questa clausola produrrà sempre lo stesso risultato:
SELECT
SUM(CAST(("XY"."X") COME DECIMALE(1,1)) AS "X"