SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE ( DATEDIFF(day, maxlogtm, GETDATE() > 120)
Thông thường, bạn không thể tham chiếu đến bí danh trường trong WHERE
mệnh đề. (Hãy coi nó như toàn bộ SELECT
bao gồm cả bí danh, được áp dụng sau WHERE
mệnh đề.)
Tuy nhiên, như đã đề cập trong các câu trả lời khác, bạn có thể buộc SQL xử lý SELECT
được xử lý trước WHERE
mệnh đề. Điều này thường được thực hiện với dấu ngoặc đơn để buộc thứ tự hoạt động logic hoặc với Biểu thức bảng chung (CTE):
Dấu ngoặc đơn / Chọn con:
SELECT
*
FROM
(
SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
) as innerTable
WHERE daysdiff > 120
Hoặc xem câu trả lời của Adam cho một phiên bản CTE tương tự.