从 Hive 中的同一列中提取 ang join

问题描述

我需要从另一个表的单个列中获取不同的数据。

假设我有一个带有以下列集的 TAB_A。

enter image description here

TAB_B 有一列。

enter image description here

我的预期输出应该是,

enter image description here

这里 col_x 应该有 code(TAB_B) = '08' 时的数据 和 当 code(TAB_B) = '36' 时 col_y 应该有数据。

我试过的都行不通,

SELECT 
a.col1,a.col2,a.col3,a.col4,substr(a.col5,13,3) as col_x,3) as col_y
from TAB_A a 
JOIN TAB_B b on b.code = '08'
JOIN TAB_B b on b.code = '36'

任何人都可以提出最佳解决方案。

解决方法

您的要求不是很清楚,但您似乎正在寻找 cross joincase when 子句

SELECT 
a.col1,a.col2,a.col3,a.col4,case when code(TAB_B) = '08' then substr(a.col5,13,3)  else null end as col_x,case when  code(TAB_B) = '36'then substr(a.col5,3)  else null end as col_y,from TAB_A a 
JOIN TAB_B 

;