Ваш запрос может выглядеть следующим образом:
SELECT c.client_id, COALESCE(c.signoffdate, min(cmp.dsignoff)) AS signoff
FROM clients c
LEFT JOIN campaigns cmp ON cmp.client_id = c.client_id -- join condition!
GROUP BY c.client_id, cd.signoffdate -- group by!
ORDER BY COALESCE(c.signoffdate, min(cmp.dsignoff));
Или с упрощенным синтаксисом:
SELECT c.client_id, COALESCE(c.signoffdate, min(cmp.dsignoff)) AS signoff
FROM clients c
LEFT JOIN campaigns cmp USING (client_id)
GROUP BY 1, cd.signoffdate
ORDER BY 2;
Основные моменты:
- Использованный псевдоним
c
, но упоминается как cd
. - Отсутствие условия соединения приводит к перекрестному соединению, вероятно, не предназначено.
- Отсутствует
GROUP BY
. - Я предполагаю, что вы хотитесгруппировать по столбцу первичного ключа
clients
и назвать его client_id
. - Я также предполагаю, что
client_id
связывает две таблицы вместе. COALESCE()
служит в качестве запасного варианта в случаеsignoffdate
НЕДЕЙСТВИТЕЛЕН.