SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE ( DATEDIFF(day, maxlogtm, GETDATE() > 120)
Обычно вы не можете ссылаться на псевдонимы полей в предложении WHERE
.(Представьте себе, что весь SELECT
, включая псевдонимы, применяется после предложения WHERE
.)
Но, как упоминалось в других ответах, вы можете заставить SQL обрабатывать SELECT
для обработки доWHERE
предложение.Обычно это делается с помощью скобок для принудительного логического порядка операций или с помощью общего табличного выражения (CTE):
Скобки / Подвыбрать:
SELECT
*
FROM
(
SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
) as innerTable
WHERE daysdiff > 120
Или см. Ответ Адама для версии CTE:то же самое.