4

このフォーラムで同様の質問を見つけましたが、正確ではありません。十分に検索していない場合はご容赦ください。これは私の質問です..Oracleで

select ( t.value*2) as inst2, (inst2 * 3) as inst3
from table t;

背後にある考え方f() = t.value*2は、高価な呼び出しである場合、それを2回行う必要はないということです..または、使用できる代替クエリ構造があります(CTASでこれを達成しようとしています)

前もって感謝します。

4

2 に答える 2

2

別のオプション:

with cte as (
    select t.value*2 as inst2
)
select
    cte.inst2,
    (cte.inst2*3) as inst3
from cte

これは実際には bluefeet の回答と同じですが、-syntax を使用した方が理解しやすいとwith思います。

于 2013-03-13T15:54:16.047 に答える
0

2 番目の計算でエイリアスを使用する場合は、サブクエリを使用する必要があります。

select inst2,
    (inst2 * 3) as inst3
from
(
    select t.value*2 as inst2
    from table t
) 
于 2013-03-13T15:22:34.917 に答える