首先是主表,其次是查找表。
我需要将第一个表的列名与第二个表中的值进行比较,如果在第二个表的任何行中找到某个列名,则从第二个表中提取一些字段。
有可能在黑斑羚中这样做吗?
Table 1
source |location |origin
----------+----------+-------
s1 |india |xxx
Table 2
extractedfrom|lct |lkp_value|map_value
-------------+----------+---------+---------
s1 |location |india |india_x
s1 |origin |xxx |yyyyyy
我需要像
final view required
source |location |origin |location_ll|origin_lkp
----------+----------+----------+-----------+----------
s1 |india |xxx |india_x |yyyyy
最佳答案
您应该编辑您的帖子,以更具体地说明您要执行的操作以及希望如何加入表格。
给定您提供的示例,以下查询应适用于您。
SELECT t1.source,
t1.location,
t1.origin,
t2_loc.map_value AS location_lkp,
t2_ori.map_value AS origin_lkp
FROM Table1 t1
JOIN Table2 t2_loc ON t1.source = t2_loc.extractedfrom
AND t1.location = t2_loc.lkp_value
JOIN Table2 t2_ori ON t1.source = t2_ori.extractedfrom
AND t1.origin = t2_ori.lkp_value
WHERE t2_loc.lct = 'location'
AND t2_ori.lct = 'origin'
诀窍是您多次加入
Table2
-您希望匹配的每一列都加入一个。关于hadoop - 如何在Impala中将一个表中的列名与另一个表中的值进行比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47975760/