我有简单的查询:
SELECT ((interest_step / 12) * 365 + (MOD(interest_step, 12) * 30)) AS "days"
FROM "negotiations"."addon" WHERE (days <= 72)
但是当我执行它时,我收到一个错误:列'days'不存在。
我该如何纠正?
答案 0 :(得分:0)
请改为尝试:
SELECT *
FROM
(
SELECT
((interest_step / 12) * 365 + (MOD(interest_step, 12) * 30)) AS "days"
FROM "negotiations"."addon"
) t
WHERE (days <= 72)
这是因为WHERE
子句在SELECT
子句之前执行,因此它不会看到别名days
。你应该将它包含在子查询中。
答案 1 :(得分:0)
您无法在生成它的同一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)