SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE ( DATEDIFF(day, maxlogtm, GETDATE() > 120)
Normálně nemůžete odkazovat na aliasy polí v WHERE
doložka. (Představte si to jako celý SELECT
včetně aliasů se použije za WHERE
doložka.)
Ale jak je uvedeno v jiných odpovědích, můžete přinutit SQL, aby zpracoval SELECT
který se má zpracovat před WHERE
doložka. To se obvykle provádí pomocí závorek k vynucení logického pořadí operací nebo pomocí společného tabulkového výrazu (CTE):
Závorka/podvýběr:
SELECT
*
FROM
(
SELECT
logcount, logUserID, maxlogtm,
DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
) as innerTable
WHERE daysdiff > 120
Nebo se podívejte na Adamovu odpověď pro CTE verzi téhož.