Zitat Zitat von Fuerchau Beitrag anzeigen
Du castest ja nur die Zwischenergebnisse und nicht das Endergebnis.
Lass die Zwischencasts mal weg und caste das Endergebnis:

decimal(sum ....., 11, 2)

Berücksichtige dazu das max. mögliche Ergebnis um einen Überlauf auszuschließen.
Dazu kommt noch, wie deine sonstigen Programme noch runden, also auf welchem Zwischenergebnis.
Gerade bei Prozenten kann das nicht so unerheblich werden.

SQL stellt dir die Funktion ROUND(Wert, Stellen) zur Verfügung.
Dann kannst du das casten ganz sein lassen, da dies nur zum Abschneiden des Wertes führt, Beispiel:

round(STS / 100.00 * RAB, 2)

sum(round(....., 2))

round(sum(....), 2)

Je nach Ziel des Ergebnisses.
Habe mich für die Varaiante decimal(sum ....., 11, 2) entschieden.

Das mit round(sum(....), 2) hat auf Anhieb nicht geklappt, aber das probiere ich später noch aus.

Gruß und Dank

Tarki