Это мой SQL заявление, которое работает с использованием DateDiff:Использование DateDiff в заявлении MySQL
SELECT SUM(b134_nettpay) AS Total, b134_rmcid, b134_recdate
FROM B134HREC
WHERE datediff (dd, '2006-05-05', getdate()) > 90
GROUP BY b134_rmcid, b134_recdate
ORDER BY b134_recdate DESC, b134_rmcid
Мне нужно заменить HARDCODED дату '2006-05-05' с MAX (b134_recdate) следующим образом:
SELECT SUM(b134_nettpay) AS Total, b134_rmcid, b134_recdate
FROM B134HREC
where datediff (dd, MAX(b134_recdate), getdate()) > 90
GROUP BY b134_rmcid, b134_recdate
ORDER BY b134_recdate DESC, b134_rmcid
Но я получаю сообщение об ошибке:
агрегат не может появиться в ИНЕКЕ, если оно не находится в подзапроса, содержащегося в HAVING клауса e или список выбора, а агрегированный столбец является внешней ссылкой.
Любая идея, как исправить мое заявление SQL?
Это относится к «или списку выбора», как предложено сообщением об ошибке –
Поскольку он стоит, запрос не может использовать ни один индекс, который может быть на b134_recdate (кроме максимального). Если это «где B134_rec_date> DateAdd (dd, getDate(), 90),« он будет использовать индекс, если он существует. NB: Не уверен, что синтаксис dateadd верен, но вы получаете идею. –