当两个表中都不存在所有值时,如何修复两个表的完全外部联接

时间:2019-10-10 10:37:08

标签: sql presto

我有两个要加入的表。我要加入的变量之一是国家名称。但是,其中一个表具有值,而另一个表没有所有值。这将生成没有所有数据的空白行。

这是我目前正在尝试的

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 个答案:

答案 0 :(得分:1)

您正在market上加入并返回。我不确定您为什么使用full join(您的解释建议使用left join,但尚不清楚哪个表具有所需的所有行)。

也就是说,要获取'Other',请在外部SELECT中使用COALESCE()

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