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
句は評価されたクエリの最後の部分の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
;
所属していません StackOverflow