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を定義するサブクエリ内にのみ存在しますclclmそのため、そのサブクエリの外で呼び出すことはできません。すべての外部参照をcladn に変更すると問題ありません。あなたがそれにSELECT *取り組んでいる間、必要な列を明示的に特定し、削除する必要があります。

于 2013-09-09T15:22:04.640 に答える