Ist es Absicht, dass deine CASE-Konstrukte für PMAW > 0 und PMAW <= 0 gleich sind?
Abgesehen davon: Lässt es dein fachliches Umfeld zu, aus
SELECT SUM((CASE
WHEN (b.PM = 0 AND b.PA = 'Z') THEN 0
WHEN (b.PM = 0 AND b.PA = 'K') THEN 0
WHEN b.PM = 0 THEN 1
ELSE b.PM
END) * Preis)
FROM ...
das hier zu machen:
SELECT SUM((CASE WHEN b.PM = 0 THEN 1 ELSE b.PM END) * Preis)
FROM …
WHERE b.PM != 0 OR b.PA NOT IN ('Z', 'K')
Wäre vermutlich effizienter, weil er die irrelevanten Rows dann gar nicht beachtet.
Rolf