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)