在Where子句中使用计算的字段
题
有没有一种方法可以使用计算的字段 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
;
但是我明白了 ORA-00904: "TOTAL": invalid identifier
.
所以我必须使用
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
;
解决方案
逻辑上, , 这 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
;
不隶属于 StackOverflow