2016-12-02 2 views
0

데이터베이스 쿼리에 대해 하나의 질문이 있습니다. 아래 표를 참조하십시오.여러 열에서 열 찾기

Table : 1 
ID Country 
1 x 
2 y 
3 z 
4 k 


Table : 2 
eng fre fre1 fre2 
x x 
x1 k  y t 
x2   n  z 

Output Table 
id country 
1 x 
2 x1 
3 x2 
4 x1 

하이브에서 어떻게 구현합니까?

도움을 주셔서 대단히 감사합니다.

답변

1

당신은 세 번에 가입 할 수 있지만, 느린 실행할 수 있습니다 : 하이브가 피벗을 지원하지 않기 때문에

select a.id, coalesce(b.eng, c.eng, d.eng) as Country 
    from table_1 a 
     left join table_2 b on a.country=b.fre 
     left join table_2 c on a.country=c.fre1 
     left join table_2 d on a.country=d.fre2 
; 
+0

첫 번째 옵션은 내 경우에는 작동하지 않습니다. 남은 옵션은 제가 이미 사용한 두 번째 옵션입니다.하지만 언급 한대로 220 만 개의 레코드가 있으므로 쿼리가 영원히 실행됩니다. –

+0

Hive가 지원하지 않는 것이 없기 때문에 첫 번째 쿼리는 Hive에서 작동해야합니다. 서브 쿼리가 지원되며 coalesce() 및 max()도 지원됩니다. 실행 해보십시오, 잘 작동합니다. – leftjoin

+0

이'--pivot table2'는 단지 주석에 불과합니다. – leftjoin