У вас есть несколько ошибок. Например, min()
без group by
. Фильтрация после агрегации, но не having
. Условия фильтрации связаны запятыми. Отсутствие запятых и т. Д.
Итак, я думаю, вы хотите:
SELECT cust_id
FROM customers as c
WHERE NOT EXISTS (SELECT 1 FROM campaign ca WHERE ca.cardno = c.cust_cardno) AND
City = "A"
Email IS NOT NULL AND
LEFT(cardno, 3) IN ('100', '110') AND
(PHONE1 IS NOT NULL OR
PHONE2 IS NOT NULL
)
GROUP BY cust_id
HAVING min(purchase_date) = 2000 ;
Обратите внимание, что я заменил NOT IN
на NOT EXISTS
. NOT IN
не работает должным образом, если любая из возвращенных строк NULL
.
Я также изменил логику «начать с».