我在加入表格和视图后创建了一个视图。 视图包含连接中的一些实际列,其中一些是计算列(让我们称之为type1)。其中一些是计算列(type2)的计算。 有没有什么方法可以引用type1列来计算type2只是按名称而不是再次编写整个代码? (我也不想创建另一个子查询),只是检查是否有任何有效的方法来编写代码。这里没有发布实际代码,这是我正在尝试做的简短形式:
Create view ABCD
col1,col2 , calc_col1, calc_col2 , Calc_col3
as
select a.col1 as col1 ,
a.col2 as col2,
case when some_calulations then 2 else 0 end as calc_col1,
( case when some_calulations then 2 else 0 end) - a.somecol as calc_col2 ,
( ( case when some_calulations then 2 else 0 end) - a.somecol ) + 5 )as calc_col3
from Table1 as a
left join view2 as b
on join_condition
答案 0 :(得分:1)
否,你不能。您可以再次使用整个表达式(或)使用子查询,并在外部查询中引用列名称
答案 1 :(得分:1)
select
a.col1 as col1,
a.col2 as col2,
c.calc_col1,
d.calc_col2,
d.calc_col2 + 5 as calc_col3
from
Table1 a
left join
view2 b on join_condition
cross join lateral
(select case when some_calulations then 2 else 0 end as calc_col1) c
cross join lateral
(select calc_col1 - a.somecol as calc_col2) d