9

不知道这里发生了什么以及为什么这不起作用。我收到以下错误:

“派生表中的所有表达式都必须有一个明确的名称”——使用 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
4

3 回答 3

10

您的子查询中的 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
于 2013-09-09T15:20:49.827 回答
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
于 2013-09-09T15:24:19.517 回答
1

别名clm仅存在于定义cl别名的子查询中。因此,您不能clm在该子查询之外调用。将所有外部引用更改为cladn 就可以了。在您使用它的同时,您还应该删除SELECT *并明确标识您需要的列。

于 2013-09-09T15:22:04.640 回答