有没有一种方法可以使用计算的字段 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 
; 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top