SELECT logcount, logUserID, maxlogtm
, DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE daysdiff > 120
我明白了
“无效的列名 daysdiff”。
Maxlogtm 是一个日期时间字段。这是让我发疯的小事。
原文由 user990016 发布,翻译遵循 CC BY-SA 4.0 许可协议
SELECT logcount, logUserID, maxlogtm
, DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE daysdiff > 120
我明白了
“无效的列名 daysdiff”。
Maxlogtm 是一个日期时间字段。这是让我发疯的小事。
原文由 user990016 发布,翻译遵循 CC BY-SA 4.0 许可协议
对我来说,在 WHERE 子句中使用 ALIAS 的最简单方法是创建一个子查询并从中进行选择。
例子:
WITH Q1 AS (
SELECT LENGTH(name) AS name_length,
id,
name
FROM any_table
)
SELECT id, name, name_length FROM Q1 WHERE name_length > 0
原文由 Michael Henry 发布,翻译遵循 CC BY-SA 4.0 许可协议
通常您不能在
WHERE
子句中引用字段别名。 (将其视为整个SELECT
包括别名,在WHERE
子句之后应用。)但是,正如其他答案中所述,您可以强制 SQL 在
WHERE
子句之前处理SELECT
。这通常使用括号来强制操作的逻辑顺序或使用公用表表达式(CTE)来完成:括号/子选择:
或者查看 Adam 的 CTE 版本的答案。