我在oracle中有一个场景,我需要能够重用先前在同一个select语句中计算的伪列的值,如:
select 'output1' process, process || '-Output2' from Table1
我不想在第二列中再次重复第一列逻辑以进行维护,目前它已完成
select 'output1' process, 'output1' || '-Output2' name from Table1
因为我有4个依赖于前一列输出的列,重复将是维护噩梦
编辑:我包含了表名并删除了双重,因此没有假设这不是一个复杂的过程,我的实际语句确实在不同的表上有2到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
)