Es empfiehlt sich immer so eine Abfrage mit WITH aufzubauen - also z.B.:
Code:
WITH
PersonenOhneAuftrag AS (
SELECT pnum FROM Auftrag GROUP BY pnum HAVING COUNT(*) = 0
),
PersonenOhneNAuftrag AS (
SELECT pnum FROM Auftrag WHERE Typ <> N GROUP BY pnum
),
...
SELECT * FROM Person
WHERE num NOT IN (SELECT pnum FROM PersonenOhneAuftrag)
OR num IN (SELECT pnum FROM PersonenOhneNAuftrag)
...
Durch das WITH hast du die Möglichkeit, deine Abfragen Stück für Stück zu testen und zu strukturieren - und die meisten
Query Optimizer haben es damit auch leichter - zumindest ist das bei DB2 so.
Grüße
Daniel