Hive:连接2个表并在单个查询中选择不同的列

时间:2017-11-15 13:01:07

标签: hive

我在hive中有两个表,如表A和表B.基本上我想加入它们,并希望在单个查询中根据某些条件选择不同的列。

表A:

empid;name;sal;dept

1;'X';100;IT

2;'Y';100;IT

3;'Z';100;ADMIN

表B:

empid;name;address

1;'X';A

2;'Y';B

3;'Z';C

期望的输出:

When Dept='IT'
select empid,name,address from Table A join Table B on (A.empid=B.empid)

When Dept='ADMIN'
select empid,address from Table A join Table B on (A.empid=B.empid)

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果您要查找单个查询,则输出必须位于相同的结构中。 我认为由于某些安全原因,您不想显示ADMIN的名称。

如果是这样,您可以执行以下操作。管理员的姓名将显示为'姓名不可用'。希望这可以帮助。如果没有,请告诉我们您的问题背后的原因。

SELECT ta.empid, 
       CASE WHEN ta.dept = 'IT' THEN ta.name
            WHEN ta.dept = 'ADMIN' THEN 'Name not available'
       END AS name,
       tb.address
  FROM tableA ta,
       tableB tb
WHERE ta.empid = tb.empid;