나는 하이브를 처음 사용하고 다음 쿼리를 구현하고 싶습니다.
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
마지막 왼쪽 조인까지 잘 작동합니다. 중첩 된 쿼리는 분명히 하이브에서 승인되지 않습니다.
어떻게 접근 할 수 있습니까?
조인 된 테이블 대신 하위 쿼리를 사용합니다.
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
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다