配置单元嵌套查询左联接

hujrc8aj  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(404)

我是hive的新手,我想实现以下查询

select a.controlid, 
          b.name as campaign, 
          a.controlactivityid as activitysource,
          c.code as  codemyaprc,
          c.label_en as label_en,
          c.label_fr as label_fr
   from bo_h_control.bridgeactivity a 
        join suvh_econtrol.TMP_GPS_REF b ON a.controlcampaignid = 
   b.ps_cam_id
        left join  srv_h_a8460_fpc.activity c 
                   ON a.controlactivityid=c.code 
                      and c.date_creation= select 
   max(date_creation) from srv_h_a8460_fpc.activity

在最后一个左连接之前,它一直正常工作。嵌套查询在配置单元中显然没有授权。
我怎样才能做到这一点。

uelo1irk

uelo1irk1#

使用子查询而不是联接表:

select a.controlid, 
          b.name as campaign, 
          a.controlactivityid as activitysource,
          c.code as  codemyaprc,
          c.label_en as label_en,
          c.label_fr as label_fr
   from bo_h_control.bridgeactivity a 
        join suvh_econtrol.TMP_GPS_REF b ON a.controlcampaignid = 
   b.ps_cam_id
        left join (select c.*, max(date_creation) over() as max_date_creation
                     from srv_h_a8460_fpc.activity c 
                  ) c ON a.controlactivityid=c.code 
                         and c.date_creation=c.max_date_creation

或者最好将最后一个连接条件移动到子查询中的where子句中:

select a.controlid, 
          b.name as campaign, 
          a.controlactivityid as activitysource,
          c.code as  codemyaprc,
          c.label_en as label_en,
          c.label_fr as label_fr
   from bo_h_control.bridgeactivity a 
        join suvh_econtrol.TMP_GPS_REF b ON a.controlcampaignid = 
   b.ps_cam_id
        left join (select * from
                   (
                   select c.*, max(date_creation) over() as max_date_creation
                     from srv_h_a8460_fpc.activity c 
                   )c where max_date_creation=date_creation
                  ) c ON a.controlactivityid=c.code

相关问题