Das Beispiel ist nur ein fiktives Beispiel. Der eigentliche Befehl schaut ein wenig komplexer aus:

with apc00_one as
(select pcartn, pckdnr, max(pcsanr) pcsanr
from smkdift/apc00 b
where b.pcstat='X'
group by pcartn, pckdnr
order by pckdnr, pcartn),
apc00_two as
(select * from smkdift/apc00 a
where pcsanr in (select pcsanr from apc00_one)
and pckdnr = ' 230964'),
apc00_three as
(select a.PCSANR
from smkdift/apc00 a
left join apc00_two b on a.pckdnr=b.pckdnr
and a.pcartn=b.pcartn
where a.pcstat=' '
and ((a.pcbekz=2 and b.pcbekz=2) or
(a.pcbekz=3 and b.pcbekz=3 and a.pcekne=b.pcekne)) )

delete from smkdift/apc00
where pcsanr in (select PCSANR from apc00_three)


Der Befehl mit den CTEs existierte schon in Verbindung mit der Select-Anweisung und ich habe diese als Basis für den Delete-Befehl verwenden wollen. Was aber wie erwähnt anscheinend nicht funktioniert!