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 la WHERE
clause. (Considérez-le comme l'ensemble des SELECT
alias, y compris, est appliqué après la WHERE
clause.)
Mais, comme mentionné dans d'autres réponses, vous pouvez forcer SQL à traiter SELECT
pour être traité avant la WHERE
clause. Cela se fait généralement avec des parenthèses pour forcer l'ordre logique de fonctionnement 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.
`daysdiff`
.