【问题标题】:Issue with subquery - All expressions must have explicit name子查询问题 - 所有表达式都必须有明确的名称
【发布时间】:2013-09-13 03:21:21
【问题描述】:

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

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

【问题讨论】:

    标签: sql teradata


    【解决方案1】:

    您的子查询中的 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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        除了那个错误,你的加入还有另一个错误:

        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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-20
          • 2013-01-23
          • 2022-08-23
          • 1970-01-01
          • 2017-12-29
          • 1970-01-01
          • 2022-01-15
          相关资源
          最近更新 更多