4

伙计们,我在这个论坛上发现了类似但不确切的问题——如果我没有做足够的搜索,请原谅我。这是我的问题..在甲骨文

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

背后的想法是如果f() = t.value*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 的回复相同,但我认为使用with-syntax 更容易理解。

于 2013-03-13T15:54:16.047 回答
0

如果您想在第二次计算中使用别名,那么您将需要使用子查询:

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