9
votes

Numéro avec sous-requête - Toutes les expressions doivent avoir un nom explicite

Je ne sais pas ce qui se passe ici et pourquoi cela ne fonctionne pas. Je reçois l'erreur suivante:

"Toutes les expressions d'une table dérivée doivent avoir un nom explicite" - travailler avec Teradata. P>

    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 commentaires

3 Réponses :


10
votes

Votre max (av.d_usr_udt_lst) dans votre sous-requête n'a pas de nom explicite. Vous devez l'alias comme ceci comme ceci: xxx

de sorte que la requête ressemble à xxx


0 commentaires

1
votes

L'alias CLM n'existe que dans la sous-requête qui définit le cl alias. En tant que tel, vous ne pouvez pas appeler CLM en dehors de cette sous-requête. Changez toutes les références extérieures à CL ADN, tout ira bien. Alors que vous devez également vous débarrasser de la SELECT * et d'identifier explicitement les colums dont vous avez besoin.


0 commentaires

2
votes

En dehors de cette erreur, vous avez une autre erreur dans votre join:

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


0 commentaires