У меня есть один набор данных
и другой справочный стол
с помощью запроса ниже
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;
Я получаю набор данных ниже
У меня 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);
Пожалуйста, предложите любой другой способ написать этот запрос оптимизированным и более коротким способом.