hive 基于一个字段的多个条件连接多个表

ljo96ir5  于 2022-12-18  发布在  Hive
关注(0)|答案(1)|浏览(236)

我需要找到将一个表连接到其他三个表的最有效方法,使用它们的[Id_Orig]字段上的值作为条件
将表1视为包含我们的数据域的表,具有以下字段:

Select Id_Orig, F1, F2 From Table1

字段[Id_Orig]只能有三个值:“DO”、“CC”和“DP”。我需要根据如下所示的值将其他三个表与***Table1***连接起来:

*表1左联接表DO:仅适用于[Id_Orig] = 'DO'的记录
*表1左联接表_CC:仅适用于[Id_Orig] =“CC”的记录
*表1左联接表DP:仅适用于[Id_Orig] =“DP”的记录

假设Table1有1000条记录,这些记录必须保持不变,我们的想法只是从其他各自的链接表中添加字段,如下所示:

Table1.Id_Orig, Table1.F1, Table1.F2, Table_DO.*, Table_CC.*, Table_DP.*

有谁能告诉我,请问,如何是最好的方式来实现这一点,如果这可以在'ON'子句后的左连接?
提前感谢。Leopoldo Fernandes葡萄牙

a11xaf1n

a11xaf1n1#

尝试以下内容:

SELECT t1.*, tdo.*, tcc.*, tdp*  
FROM Table1 AS t1 
LEFT OUTER JOIN Table_DO AS tdo ON t1.[Id_Orig] = tdo.[Id_Orig] AND t1.[Id_Orig] = 'DO' 
LEFT OUTER JOIN Table_CC AS tcc ON t1.[Id_Orig] = tcc.[Id_Orig] AND t1.[Id_Orig] = 'CC' 
LEFT OUTER JOIN Table_DP AS tdp ON t1.[Id_Orig] = tdp.[Id_Orig] AND t1.[Id_Orig] = 'DP'

例如,当您JOIN到Table_DO时,您说您希望两个表都有[Id_Orig] = 'DO' ...因为JOIN条件是值相等,所以您只需要指定一列(我选择Table1)。

相关问题