select rid,data_dt,org_no,rule_id,is_pass,
case
when data_dt >= '2024-01-01' then
'通过'
else
'不通过'
end as result
from crrv_result_full_summary
where result <> '不通过'
这样是不行的:报错:unknown column ‘result’ in
这个错误表明在你的SQL查询中,你试图在where子句中使用一个别名result,但在WHERE子句执行时,这个别名是不可用的,因为别名通常只在SELECT列表中可用。
解决方法:
-
不使用别名,直接在
WHERE子句中使用原始的条件表达式。例如,如果你的原始查询是:SELECT num AS result FROM table_name WHERE result <> 0; -
你应该去掉
AS result,直接写成:SELECT num FROM table_name WHERE num <> 0; -
如果你需要使用别名,你可以使用子查询或者临时表。例如:
SELECT result FROM (SELECT num AS result FROM table_name) AS subquery WHERE subquery.result <> 0;
或者使用临时表:
SELECT result INTO @temp_table FROM (SELECT num AS result FROM table_name);
SELECT result FROM @temp_table WHERE result <> 0;
上面的问题,这里用临时表解决方案:
select * from
(
select rid,data_dt,org_no,rule_id,is_pass,
case
when data_dt >= '2024-01-01' then
'通过'
else
'不通过'
end as result
from crrv_result_full_summary
) as kk
where kk.result <> '不通过'
SQL别名使用误区与解决方案
1488






