问题是:我已经找到了这个查找表,我将其用作字典来创建一个新的列,并将其翻译成“#”。某列代码的含义。
让我们说:
表1:
ID Code
01 A
02 B
03 C
Lookup_table(字典):
Code Meaning
A Alice
B Bob
C Charlie
我可以轻松地创建一个JOIN来创建一个新表(Table2),其中包含新列'含义'添加到它:
表2:
CREATE TABLE Table2 AS SELECT T1.ID, T1.Code, LKP.Meaning
FROM Table1 AS T1
LEFT OUTER JOIN Lookup_table AS LKP
ON (T1.Code = LKP.Code);
但是:如果新代码出现在表1中该怎么办(例如(" 04"," D"))并且Lookup_table中没有翻译? (假设你想避免使用NULL作为答案)有没有办法获得类似“其他人”的东西。在意义上回答这种情况?
谢谢!
答案 0 :(得分:0)
您可以使用COALESCE()
来实现这一目标。 COALESCE()
接受两个参数,同时选择不是NULL
的第一个参数。
您可以按如下方式修改查询:
CREATE TABLE Table2 AS
SELECT
T1.ID AS ID,
T1.Code AS Code,
COALESCE(LKP.Meaning,'others') AS Meaning
FROM Table1 AS T1
LEFT OUTER JOIN Lookup_table AS LKP
ON (T1.Code = LKP.Code);
在您的情况下,这意味着将LKP.Meaning
作为第一个参数。如果此值为NULL
,则会显示'others'
。
另请参阅Hive Documentation。