Il s'agit d'une bizarrerie du moteur SQL qui alimente nos requêtes. Lorsqu'un calcul (tel que SUM) est effectué sur plusieurs types de décimales ayant des valeurs différentes, les valeurs sont converties en un type commun et arrondies. Les valeurs négatives, en particulier, peuvent entraîner une perte de précision et produire des résultats de requête différents à chaque exécution.
Pour éviter cela, nous vous recommandons d'ajuster votre commande de manière à ce que la fonction de moulage soit exécutée avant le calcul.
Par exemple, cette clause peut produire des résultats incohérents :
SELECT
CAST(SUM("XY". "X") AS DECIMAL(1,1)) AS "X"
Mais cette clause produira toujours le même résultat :
SELECT
SUM(CAST(("XY"."X") AS DECIMAL(1,1))) AS "X"