Oracle:在同一个Select语句中使用Pseudo列值

时间:2009-08-28 16:17:15

标签: oracle select

我在oracle中有一个场景,我需要能够重用先前在同一个select语句中计算的伪列的值,如:

select 'output1' process, process || '-Output2' from Table1

我不想在第二列中再次重复第一列逻辑以进行维护,目前它已完成

select 'output1' process, 'output1' || '-Output2' name from Table1

因为我有4个依赖于前一列输出的列,重复将是维护噩梦

编辑:我包含了表名并删除了双重,因此没有假设这不是一个复杂的过程,我的实际语句确实在不同的表上有2到3个连接

3 个答案:

答案 0 :(得分:9)

您可以在子查询中计算值:

select calculated_output process, calculated_output || '-Output2' name from
(
    select 'output1' calculated_output from dual
)

答案 1 :(得分:9)

你也可以使用子查询因子分解语法 - 我认为它本身更具可读性:

with tmp as
(  
  select 'output' process from dual
)
select 
  process, process || '-Output2' from tmp;

答案 2 :(得分:2)

与之前的海报非常相似,但我更喜欢下面显示的方法,在我看来它更具可读性,因此更具可支持性

select val1 || val2 || val3 as val4, val1 from (
   select 'output1' as val1, '-output2' as val2, '-output3' as val3 from dual
)