Улей: используйте ИЛИ в JOIN - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть один набор данных

enter image description here

и другой справочный стол

enter image description here

с помощью запроса ниже

SELECT Col1, Col2, Col3, Col4, a.RefC4, b.RefC4, c.RefC4
from Tab1 LEFT OUTER JOIN  (
      SELECT * from Ref1 where RefC2 = 'A1') a on Col2 = RefC3
     LEFT OUTER JOIN  (
      SELECT * from Ref1 where RefC2 = 'A2') b on Col3 = RefC3
     LEFT OUTER JOIN  (
      SELECT * from Ref1 where RefC2 = 'A4') c on Col4 = RefC3;

Я получаю набор данных ниже

enter image description here

У меня 45 значений противкакой поиск нужно сделать, чтобы обогатить другие столбцы, в этом примере (Col5, Col6, Col7).Если я использую левое внешнее соединение, запрос становится слишком длинным и сложным в обслуживании.Я пробовал несколько способов, но из-за того или иного ограничения улья я не могу разрешить более короткий и оптимизированный способ.

Я не могу использовать OR с соединениями, и я не хочу использовать row_number (), поскольку это увеличивает время выполнения заказа.

Select ....
from Tab1 LEFT OUTER JOIN  (
      SELECT * from Ref1) a on  (RefC2 = 'A1' and Col2 = RefC3) 
      or (RefC2 = 'A2' and Col3 = RefC3)
      or (RefC2 = 'A4' and Col4 = RefC3);     

Пожалуйста, предложите любой другой способ написать этот запрос оптимизированным и более коротким способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...