Oracle SELECT - 一列的别名作为另一列的输入

时间:2013-03-13 15:20:37

标签: sql oracle select alias

我在这个论坛上发现了类似但不是确切的问题 - 请原谅我,如果我没有做足够的搜索。这是我的问题......在Oracle中

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

背后的想法是如果f() = t.value*2是一个昂贵的调用,那么我们不需要做两次。或者是否有一个我可以使用的替代查询结构(我试图在CTAS中实现这一点)< / p>

提前感谢。

2 个答案:

答案 0 :(得分:2)

另一种选择:

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

这实际上与bluefeet的回复相同,但我认为使用with语法更容易理解。

答案 1 :(得分:0)

如果要在第二次计算中使用别名,则需要使用子查询:

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