У меня есть таблица и таблица , к которым мне нужно присоединиться.
Может случиться, что в b.col2
, b.col3
может быть значение '%', что должно быть чем-то вроде подстановочного знака, означающего, что в этом случае мы можем присоединить значение b.col2
к любому значениюa.col2
или значение b.col3
для любого значения a.col3
.
Одно решение будет выглядеть следующим образом:
select a.*, b.col4, b.col5
from tablea a
left join (select col1, col2, col3, col4, col5 tableb) b
on b.col1=a.col1 and
(b.col2 = a.col2 or b.col2 = '%') and
(b.col3 = a.col3 or b.col3 = '%')
qualify 1 = row_number() over (partition by a.id order by (case when b.col2 = '%' then 2 else 1 end), (case when b.col3 = '%' then 2, else 1 end))
Моя проблема заключается в том, что из-за более позднего использования в другом приложении яможно использовать только простые условия соединения, такие как:
b.col1 = a.col1 and
b.col2 = a.col2 and
b.col3 = a.col3
Мой вопрос: если есть способ, как достичь того же результата, что и в первом решении, но с использованием «простых» условий соединения (a.col2= b.col2) и просто вносим изменения в выделение tableb
?