Das Hauptproblem ist das Erstellen der CTE's B und C, die Gruppen von A über Distinct bilden.
Ggf. helfen dir die OLAP-Funktionen hier weiter, da man Gruppenergebnisse auf Zeilenebene ermittelt.
Z.B. B als

,count(*) over(partition by AZMK, AZMST, KPLFDN) as B_ZAHL

und C als

,count(*) over(partition by KPLFDN) as C_ZAHL

Ggf. kannst du statt Count(*) auch Count(distinct feld1 concat feld2 concat feld3) verwenden.

Für die Optimierung solltest du die Schreibweise der Joins

FROM MAGICP, AKTENP, ANKPOP

in

FROM MAGICP
inner join AKTENP on ...
inner join ANKPOP on ...

anpassen, da die alte Schreibweise von der CQE besser behandelt wurde.
Ein "[not] In" kann meist besser als "where [not] exists (select * ....)" aufgelöst werden, wobei hier gerade Indizes eine wichtige Rolle spielen.
Durch Distinct in A kann aber kein Index verwendet werden. Also Prüfe hier, ob du Distinct wirklich brauchst.