Объединение таблиц на основе условия в Hive - PullRequest
1 голос
/ 08 мая 2020

У меня есть две таблицы, и я упомянул расположение таблиц на скриншоте ниже.

enter image description here

Используя столбец Id, мне нужно объединить две таблицы. Всякий раз, когда есть совпадение с Id (например, Id это a2), мне нужно взять соответствующие значения из Table2. В некоторых случаях Id из Table1 не будет в Table2 (например, Id это a1). В этом случае мне нужно взять значения из Table2, где значение Id в Table2 равно all.

Для большей ясности я упомянул Ожидаемый результат на скриншоте ниже.

enter image description here

Я пробовал приведенный ниже код, но, похоже, не работает.

select distinct t1.Id,t1.Name,t2.Phone1,t2.Phone2    
from Table1 t1  
left join Table1 t2 on t1.Id = case when t2.Id is null then t1.Id else t2.Id end

Любая помощь приветствуется.

1 Ответ

1 голос
/ 08 мая 2020

Вы можете использовать два left join s, где второй вводит значения по умолчанию:

select t1.*, coalesce(t2.phone1, t2d.phone1) as phone1, coalesce(t2.phone2, t2d.phone2) as phone2
from table1 t1 left join
     table2 t2
     on t1.id = t2.id left join
     table2 t2d
     on t2d.id = 'All' and t2.id is null;
...