SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE ( DATEDIFF(day, maxlogtm, GETDATE() > 120)
Normalement, vous ne pouvez pas faire référence aux alias de champ dans WHERE
clause. (Considérez-le comme l'ensemble SELECT
y compris les alias, est appliqué après le WHERE
clause.)
Mais, comme mentionné dans d'autres réponses, vous pouvez forcer SQL à traiter SELECT
à traiter avant le WHERE
clause. Cela se fait généralement avec des parenthèses pour forcer l'ordre logique des opérations ou avec une expression de table commune (CTE) :
Parenthèse/sous-sélection :
SELECT
*
FROM
(
SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
) as innerTable
WHERE daysdiff > 120
Ou voir la réponse d'Adam pour une version CTE de la même chose.