Nun ja, du hattest auch die Frage gestellt, wie du die Wiederholung der Ausdrücke im Where verhindern kannst.

Übrigens könntest du auch einen Left join mit der Datei machen und den Join eingrenzen:

select sum(b.wert1 * preis), sum(b.wert2 * preis) ...
from mytable a
left join mytable b on a.key = b.key and b.rabatt <> 0

Durch den Left join erhältst du eben NULL wenn Rabatt = 0 und in der Formel ist das Ergebnis NULL wenn ein Operand = NULL.