SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE ( DATEDIFF(day, maxlogtm, GETDATE() > 120)
Normalerweise können Sie im WHERE
nicht auf Feldaliase verweisen Klausel. (Stellen Sie sich das als das gesamte SELECT
vor einschließlich Aliase, wird nach dem WHERE
angewendet Klausel.)
Aber wie in anderen Antworten erwähnt, können Sie SQL zwingen, SELECT
zu behandeln vor dem WHERE
behandelt werden Klausel. Dies geschieht normalerweise mit Klammern, um die logische Reihenfolge der Operationen zu erzwingen, oder mit einem Common Table Expression (CTE):
Klammer/Unterauswahl:
SELECT
*
FROM
(
SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
) as innerTable
WHERE daysdiff > 120
Oder siehe Adams Antwort für eine CTE-Version derselben.