SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE ( DATEDIFF(day, maxlogtm, GETDATE() > 120)
Zwykle nie możesz odwoływać się do aliasów pól w WHERE
klauzula. (Pomyśl o tym jako o całym SELECT
łącznie z aliasami, jest stosowany po WHERE
klauzula.)
Ale, jak wspomniano w innych odpowiedziach, możesz zmusić SQL do traktowania SELECT
do obsługi przed WHERE
klauzula. Odbywa się to zwykle za pomocą nawiasów, aby wymusić logiczną kolejność operacji lub za pomocą wspólnego wyrażenia tabeli (CTE):
Nawiasy/podwybór:
SELECT
*
FROM
(
SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
) as innerTable
WHERE daysdiff > 120
Lub zobacz odpowiedź Adama na wersję CTE tego samego.