この例のように、pop
のようなエイリアスをさらにcase
のように使用するにはどうすればよいですか(Oracleデータベース)。
select
(select sum(ccs_pop) from rap4) as pop,
case
when pop+x=a+b+c then pop+x
end as sum1,
case
when pop+y=d+e+f then pop+y
end as sum2
from rap4
アイデアは、複雑な状況では「ポップ」が必要であり、多くの文では「ポップ」が必要であり、エイリアスまたは何かを使用する必要があるということです...
OK、私は提供された例を取り、それを少し修正します:
select
(<insanely complex expression>) as pop,
case
when pop is null then 'isnull'
end
from rap4 ;
SELECT
リストで定義されたエイリアスは、同じSELECT
リストまたは(同じレベル)WHERE
内の別の式では使用できないため、上記はもちろんエラーになります。またはGROUP BY
句。
ただし、できることは式を複製することです。
select
(<insanely complex expression>) as pop,
case
when <insanely complex expression> is null then 'isnull'
end
from rap4 ;
または派生テーブルを使用します。
select
pop,
case
when pop is null then 'isnull'
end
from
( select
(<insanely complex expression>) as pop
from rap4
) t ;
または、共通テーブル式(CTE)を使用します。
with cte as
( select
(<insanely complex expression>) as pop
from rap4
)
select
pop,
case
when pop is null then 'isnull'
end
from cte ;