Dies ist eine Eigenart der SQL-Engine, die unsere Abfragen steuert. Wenn eine Berechnung (z. B. SUMME) mit mehreren Dezimaltypen mit unterschiedlichen Werten durchgeführt wird, werden die Werte auf einen gemeinsamen Typ gezwungen und abgerundet. Insbesondere negative Werte können zu einem Verlust an Genauigkeit führen und bei jedem Durchlauf unterschiedliche Abfrageergebnisse liefern.
Um dies zu vermeiden, empfehlen wir Ihnen, Ihren Auftrag so anzupassen, dass die Gussfunktion vor der Berechnung ausgeführt wird.
Diese Klausel kann zum Beispiel zu widersprüchlichen Ergebnissen führen:
SELECT
CAST(SUMME("XY". "X") AS DECIMAL(1,1)) AS "X"
Diese Klausel führt jedoch jedes Mal zum gleichen Ergebnis:
SELECT
SUM(CAST(("XY"."X") AS DECIMAL(1,1))) AS "X"