如何联接表并将数字邮政编码值替换为文本邮政编码值

时间:2019-07-09 20:43:58

标签: sql apache-spark hive

我有一个表main_cohort,其中有两个不同的列,其中包含3位和5位数字(例如100或10017),zip_value3zip_value5的邮政编码,并且I想要与另一个具有这些相同列的表zip_codes和一个附加列city_name联接在一起,该表具有与每个邮政编码关联的城市的文本字符串。

我想用第二个表上的城市名称替换第一个表上的数值。因此,举例来说,如果我在“ main_cohort”中有一个“ zip_value3”为100的customer_id,我想用city_name表中zip_code的值替换输出中的那个将是纽约。

2 个答案:

答案 0 :(得分:0)

表格-tbl_MainCohort

CustomerID Zip_Value3 Zip_Value5

  1             100         10000
  2             200         20000

表格-tbl_ZipCodes

ZipID Zip_Value3 Zip_Value5城市名称

 1              100         10000       New York
 2              200         20000       California
  

以下查询将为您提供列表中所有两个邮政编码都匹配的列表中所有邮政编码的所有城市。

     

从tbl_ZipCodes代码中选择City_Name      INNER JOIN tbl_MainCohort主要开启代码。Zip_Value3= main.Zip_Value3      AND代码。Zip_Value5= main.Zip_Value5

答案 1 :(得分:0)

我想您想要一个城市,首先检查5位数的邮政编码,然后再检查3位数的邮政编码:

select mc.*, coalesce(zc5.city_name, zc3.city_name) as city_name
from main_cohort mc left join
     zip_code zc5
     on mc.zip_value5 = zc5.zip_code left join
     zip_code zc3
     on mc.zip_value3 = zc3.zip_code