質問

計算されたフィールドを使用する方法はありますか 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 句は評価されたクエリの最後の部分の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 
; 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top