Как сделать LEFT JOIN через INNER JOIN?
Задача несколько творческая. В Impala из Oracle драйвер не спускает внешние соединения таблиц (LEFT JOIN). То есть он в импале выполнет запрос обеих частей соединения и джойнить будет уже в оракле, получив результаты обоих запросов по сети. UNION тоже не спускается. Поэтому нужно придумать как сделать левый джон, но через внутренний (например, в случае если в правой таблице не находится нужной строки, то джойнилось бы на какую-нибудь заглушку). Например относительно рабочий вариант:
SELECT *
FROM table_a
JOIN (select col_a, col_b from table_b
union all
select null col_a, null col_b from dual) t
ON (<<настоящее_условие_соединения>> AND NOT (col_a is null AND col_b is null))
OR (NOT <<настоящее_условие_соединения>> AND (col_a is null AND col_b is null)) -- то есть реализация XOR
Но как я сказал, UNION использовать тоже нельзя. Был бы благодарен за любые идеи по обходу ограничения.