试着这样做:
SELECT CASE WHEN field = true THEN one * another ELSE one END as case_field
FROM table WHERE case_field >= 9000
Run Code Online (Sandbox Code Playgroud)
并收到case_field不存在的错误.
是否可以在不重复CASE的情况下执行此操作?
看起来PostgresSQL支持派生表
SELECT * FROM
(
SELECT CASE WHEN field = true THEN one * another ELSE one END as case_field
FROM table
) AS derived
WHERE case_field >= 9000
Run Code Online (Sandbox Code Playgroud)
您可能希望检查它对执行计划没有任何不利影响.