Как выполнить условие case в множественном операторе JOIN с другой таблицей в Red shift?

0

Я застрял в реализации нижележащего требования. Пожалуйста, помогите мне исправить этот запрос.

Требование

Условие должно быть реализовано в теории

Необходимо заполнить данные для market_num в таблице "demo" из таблицы "table1" или "table2" на основе столбца "source_country_palce" в таблице "demo". Он должен быть выбран из "table1", если он есть, там еще нужно выбрать "table2". Я застрял в написании условия. Пожалуйста, помогите мне исправить это

Запрос попробовал

условие 1

select distinct b.market_num
from test.demo a
    join test.table1 b on a.source_country_palce = b.market_palce
where b.market_num >=1 

условие 2

select distinct b.market_num
from test.demo a
    join test.table2 b on a.source_country_palce = b.country_palce
where b.market_num >=1 

Но я застрял в реализации вышеприведенного условия, например, когда первое условие не удается, тогда мне нужно выбрать "market_num" из второго условия

Теги:
select
join

2 ответа

1

Мое чистое предположение:

select distinct coalesce(b.market_num,c.market_num )
from test.demo a left outer join test.table1 b 
on a.source_country_palce=b.market_palce
left outer join test.table2 c
on a.source_country_palce=c.country_palce
where b.market_num >=1 or c.market_num >=1 ;
1

Вы можете попробовать следующее:

SELECT DISTINCT COALESCE(b.market_num, c.market_num)
FROM test.demo a
LEFT JOIN test.table1 b ON a.source_country_palce = b.market_palce
    AND b.market_num >= 1
LEFT JOIN test.table2 c ON a.source_country_palce = d.country_palce
    AND b.market_num < 1
    AND c.market_num >= 1

Я помещаю ваши условия в соединение таким образом, что он будет соответствовать только, если второе соединение, если оно не будет первым.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню