伙计们,我在这个论坛上发现了类似但不确切的问题——如果我没有做足够的搜索,请原谅我。这是我的问题..在甲骨文
select ( t.value*2) as inst2, (inst2 * 3) as inst3
from table t;
背后的想法是如果f() = t.value*2
是一个昂贵的调用,那么我们不需要做两次......或者我可以使用其他查询结构(我试图在 CTAS 中实现这一点)
提前致谢。
另外的选择:
with cte as (
select t.value*2 as inst2
)
select
cte.inst2,
(cte.inst2*3) as inst3
from cte
这实际上与 bluefeet 的回复相同,但我认为使用with
-syntax 更容易理解。
如果您想在第二次计算中使用别名,那么您将需要使用子查询:
select inst2,
(inst2 * 3) as inst3
from
(
select t.value*2 as inst2
from table t
)