Подстановочные знаки Teradata объединяются с изменением таблицы вместо условий - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть таблица и таблица , к которым мне нужно присоединиться.

Может случиться, что в 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?

...