Проблема этого подхода заключается в том, что SELECT возвращает некоторые значения, которые могут совпадать или не совпадать с отдельными записями в вашей таблице.В принципе, они могут возвращать четные комбинации значений из нескольких таблиц, нескольких строк или вообще без строк.Что бы вы хотели, чтобы DELETE делал тогда?
Итак, для DELETE вам необходимо указать, какие строки в таблице , с которой вы работаете, будут удалены.Вы можете сделать это с помощью простого предложения WHERE или предложения USING.
Если вы хотите, чтобы CTE были с DELETE, самым близким было бы использовать USING, поместить туда подзапрос и объединить его результат с таблицей.Во многих случаях это очень полезный подход, но он вызывает объединение, что влияет на производительность.Пример:
delete from CALL_CENTER t
using (
select cc_call_center_sk from CALL_CENTER
where 1=1 AND t.CC_REC_START_DATE > '2000-01-01'
) AS sub
where sub.cc_call_center_sk = t.cc_call_center_sk.
Но, опять же, для вашего запроса это не имеет особого смысла, и то, что написал @cddt, вероятно, является лучшим выбором.