Как выполнить рефакторинг AND и OR в левом внешнем соединении, поскольку куст не поддерживается, или в предложении ON - PullRequest
0 голосов
/ 20 июня 2019

Я выполняю запрос внешнего соединения слева, который включает AND и OR в предложении ON.Hive не поддерживает OR в предложении ON.Как мне переписать это для запуска в Hive?Если UNION является одним из ответов, обратите внимание, что используемая мной версия улья не поддерживает UNION.Поддерживает только UNION ALL.

select 
*
from
a
left outer join b on a.a1=b.b1
left outer join c on c.c10=a.15 and (c.12=a.25 or c.13=a.25)
left outer join d on d.d1=a.a5
where
?

1 Ответ

0 голосов
/ 20 июня 2019

Вы можете объединить UNION ALL с DISTINCT:

SELECT DISTINCT *
FROM (
  select *
  from a
  left outer join b on a.a1=b.b1
  left outer join c on c.c10=a.15 and c.12=a.25 
  left outer join d on d.d1=a.a5
  where ?
  UNION ALL
  select *
  from a
  left outer join b on a.a1=b.b1
  left outer join c on c.c10=a.15 and c.13=a.25
  left outer join d on d.d1=a.a5
  where ?
) s
...