Sql 表达式作为列和“无此类列”错误

Sql 表达式作为列和“无此类列”错误,sql,Sql,我有一个简单的问题: SELECT ((interest_step / 12) * 365 + (MOD(interest_step, 12) * 30)) AS "days" FROM "negotiations"."addon" WHERE (days <= 72) 但是当我执行它时,我得到了一个错误:“days”列不存在 如何更正它?请尝试以下方法: SELECT * FROM ( SELECT ((interest_step / 12) * 365 + (MOD

我有一个简单的问题:

SELECT ((interest_step / 12) * 365 + (MOD(interest_step, 12) * 30)) AS "days"
FROM "negotiations"."addon" WHERE (days <= 72)
但是当我执行它时,我得到了一个错误:“days”列不存在

如何更正它?

请尝试以下方法:

SELECT * 
FROM
(
   SELECT
     ((interest_step / 12) * 365 + (MOD(interest_step, 12) * 30)) AS "days" 
   FROM "negotiations"."addon" 
) t
WHERE (days <= 72)

这是因为WHERE子句在SELECT子句之前执行,因此它不会看到别名days。应将其括在子查询中。

不能在生成列别名的同一select语句中引用列别名,这给了您两种选择:

SELECT ((interest_step / 12) * 365 + (MOD(interest_step, 12) * 30)) AS "days"
FROM "negotiations"."addon" 
WHERE (((interest_step / 12) * 365 + (MOD(interest_step, 12) * 30)) <= 72)

SELECT *
FROM
(
  SELECT ((interest_step / 12) * 365 + (MOD(interest_step, 12) * 30)) AS "days"
  FROM "negotiations"."addon" 
) A
WHERE (days <= 72)