SELECT logcount, logUserID, maxlogtm
   , DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE daysdiff > 120

我明白了

"无效列名daysdiff".

Maxlogtm是一个日期时间字段.正是这些小事让我发疯.

推荐答案

SELECT
   logcount, logUserID, maxlogtm,
   DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE ( DATEDIFF(day, maxlogtm, GETDATE() > 120)

通常情况下,在WHERE子句中不能引用字段别名.(将其视为整个SELECT(包括别名)应用于WHERE子句之后.)

但是,正如其他答案中提到的,可以强制SQL在WHERE子句之前处理SELECT.通常使用括号强制执行逻辑操作顺序,或使用公共表表达式(CTE):

括号/子 Select :

SELECT
   *
FROM
(
   SELECT
      logcount, logUserID, maxlogtm,
      DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
   FROM statslogsummary   
) as innerTable
WHERE daysdiff > 120

或者看看亚当的答案,看看CTE版本的答案.

Sql相关问答推荐

在数据分区内执行确定

如何连接第二个表并将其内容输入到第一个表的单个字段中?

更新在两个或多个面中具有交点的面

删除MariaDB数据库中的JSON数据

Access 365将文本转换回BigInt

如何根据给定条件PostgreSQL迭代减少组中的行数

当一个视图在Postgres中失效时?

在Oracle SQL中将列值转换为行

当active=1时,是否可以创建id为的唯一索引?

删除行而不使数据库超载

在 SQL Server 中合并两个 XML 列

在特定条件下使用 LAG,确定要采用什么 LAG 值?

将最近的结束日期与开始日期相匹配

将空 JSON 数组添加到 SQL Server 表列中的 JSON 字符串

使用长 IN 子句的 SQL 优化

PostgreSQL-用第一个非空填充以前的值

PostgreSQL 中的递归树查询

如何在 SQL Server 中参数化 Select top 'n'

如何刷新在视图之上创建的表

Snowflake SQL group-by 的行为不同,具体取决于列是按位置引用还是按别名引用