15

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
;
4

2 に答える 2

40

論理的には、select句は評価されたクエリの最後の部分の 1 つであるため、エイリアスと派生列は使用できません。(論理的に最後に発生する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 
; 
于 2010-10-07T19:01:53.640 に答える