Zitat Zitat von fpxx Beitrag anzeigen
Mathematisch ist es klarerweise ident; tatsächlich erhalte ich bei diesem SQL-Statement unterschiedliche Ergebnisse:

Bei Summe_a*100 / Summe_tot erhalte ich die korrekten %

Bei Summe_a/Summe_tot * 100 (egal, ob 100 oder 100.00) bekomme ich als Ergebnis entweder den Wert 100 oder den Wert 0
Das liegt daran, dass sowohl Summe_a als auch Summe_tot ganzzahlig (Integer) sind, oder als solche behandelt werden.

Das Ergebnis einer Berechnung mit reinen Integer-Variablen oder Werten (unabhängig davon ob Division oder nicht) ergibt wieder einen Integer-Wert, d.h. etwaige Nachkommastellen werden abgeschnitten. So sind nun mal die Regeln!

Summe_a * 100,00 ergibt keinen Integer-Wert, da 100 Dezimal-Positionen enthält und damit intern als Fließkomma interpretiert wird. Wenn dieses (interne Fließkomma-)Ergebnis dann durch einen Integer-Wert dividiert wird, ist das Ergebnis wiederum ein Fließkomma-Wert, d.h. Nachkommastellen werden berücksichtigt.

Langer Rede kurzer Sinn, Du musst entweder Summe_a (oder Summe_Tot) explizit auf Decimal casten, oder Du stellst 100,0 an die erste oder zweite Stelle in Deiner Berechnung.

Birgitta