Luc*_*c M 14 sql oracle plsql ora-00904
有一种方法可以在where子句中使用计算字段吗?
我想做点什么
SELECT a, b, a+b as TOTAL FROM (
select 7 as a, 8 as b FROM DUAL
UNION ALL
select 8 as a, 8 as b FROM DUAL
UNION ALL
select 0 as a, 0 as b FROM DUAL
)
WHERE TOTAL <> 0
;
Run Code Online (Sandbox Code Playgroud)
但我得到ORA-00904:"TOTAL":标识符无效.
所以我必须使用
SELECT a, b, a+b as TOTAL FROM (
select 7 as a, 8 as b FROM DUAL
UNION ALL
select 8 as a, 8 as b FROM DUAL
UNION ALL
select 0 as a, 0 as b FROM DUAL
)
WHERE a+b <> 0
;
Run Code Online (Sandbox Code Playgroud)
Sha*_*nce 36
逻辑上,该select子句是评估的查询的最后部分之一,因此别名和派生列不可用.(除了order by,最后逻辑上发生.)
使用派生表远离此:
select *
from (SELECT a, b, a+b as TOTAL FROM (
select 7 as a, 8 as b FROM DUAL
UNION ALL
select 8 as a, 8 as b FROM DUAL
UNION ALL
select 0 as a, 0 as b FROM DUAL)
)
WHERE TOTAL <> 0
;
Run Code Online (Sandbox Code Playgroud)