Как исправить полное внешнее объединение двух таблиц, когда не все значения существуют в обеих таблицах - PullRequest
0 голосов
/ 10 октября 2019

У меня есть две таблицы, к которым я хочу присоединиться. Одна из переменных, к которой я присоединяюсь, - это название страны. Однако в одной из таблиц есть значения, а в другой - не все. Это создает пустые строки без всех данных.

Это то, что я сейчас пытаюсь

select 'display' as channel, date, market, revenue, spend
from (
  select trim(market) as market, date, revenue
  from table_a
) ABC
FULL JOIN (
  select 
    case geosegmentation_countries
      when 'united kingdom' then 'UK'
      when 'germany' then 'DE'
      when 'france' then 'FR'
      when 'italy' then 'IT'
      when 'spain' then 'ES'
      else 'Other'
    end as market, 
    date, 
    spend
  from table_b
) OM on ABC.market = OM.market and ABC.date = OM.Date

Таблица ABC не имеет «другого» значения на рынках. Это дает мне этот вывод, с пустыми датами и рынками. This is giving me this output, with blank dates and markets

Как я могу исправить это объединение, чтобы другие рыночные данные имели правильные даты, когда «другие» данные были заполнены в столбце market?

1 Ответ

1 голос
/ 10 октября 2019

Вы присоединяетесь к market и возвращаете его. Я не уверен, почему вы используете full join (ваше объяснение предлагает left join, но не ясно, в какой таблице есть все строки, которые вы хотите).

Тем не менее, чтобы получить 'Other', используйте COALESCE() во внешнем SELECT:

select 'display' as channel, date,
       coalesce(market, 'other') as market,
       revenue, spend
...