配置单元:连接两个表并在单个查询中选择不同的列

z0qdvdin  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(204)

我在 hive 里有两张table,说是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)

有人能帮我走近吗?

w6lpcovy

w6lpcovy1#

如果要查找单个查询,则输出必须在相同的结构中。我假设你不想显示管理员的名字,因为一些安全原因。
如果是这样的话,你可以做下面的。管理员的姓名将显示为“name not available”。希望这有帮助。如果没有,请告诉我们问题背后的原因。

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;

相关问题