不确定这里发生了什么以及为什么这不起作用。我收到以下错误:
“派生表中的所有表达式都必须具有明确的名称” - 使用teradata。
select clm.c_clm
,clm.c_loc
from
(select *
from pearl_p.TLTC900_CLM clm) as cl
left join
(select
max(av.d_usr_udt_lst)
from pearl_p.TLTC913_AVY av
group by 1) as avy
on cl.i_sys_clm = avy.i_sys_clm
答案 0 :(得分:7)
子查询中的max(av.d_usr_udt_lst)没有明确的名称。你需要像这样别名:
max(av.d_usr_udt_lst) as "MaxThing"
所以查询看起来像
select clm.c_clm
,clm.c_loc
from
(select *
from pearl_p.TLTC900_CLM clm) as cl
left join
(select
max(av.d_usr_udt_lst) as "MaxThing"
from pearl_p.TLTC913_AVY av
group by 1) as avy
on cl.i_sys_clm = avy.i_sys_clm
答案 1 :(得分:2)
除了该错误之外,您的加入中还有另一个错误:
select clm.c_clm, clm.c_loc
from (select *
from pearl_p.TLTC900_CLM clm
) cl left join
(select max(av.d_usr_udt_lst)
from pearl_p.TLTC913_AVY av
group by 1
) as avy
on cl.i_sys_clm = avy.i_sys_clm
--------------------------^ This variable is not defined.
我想你可能想要这样的东西:
select clm.c_clm, clm.c_loc
from (select *
from pearl_p.TLTC900_CLM clm
) cl left join
(select i_sys_clm, max(av.d_usr_udt_lst) as maxdate
from pearl_p.TLTC913_AVY av
group by i_sys_clm
) avy
on cl.i_sys_clm = avy.i_sys_clm and
cl.<date column goes here> = avy.maxdate
答案 2 :(得分:1)
别名clm
仅存在于定义cl
别名的子查询中。因此,您无法在该子查询之外调用clm
。将所有外部引用更改为cl
并且您将没事。
在你的时候,你还应该摆脱SELECT *
并明确识别你需要的colums。