Join 一个表中每行的配置单元连接另一个表中的所有行

Join 一个表中每行的配置单元连接另一个表中的所有行,join,hive,Join,Hive,在表A中,我有日期从2014-01-01到2014-12-31 action_date 2014-01-01 2014-01-02 2014-01-03 ... 2014-12-31 在表B中,我有如下信息 id name action_date deletion_date 1 nik 2013-01-01 2014-02-03 2 tom 2014-06-02 2014-06-30 3 lola 2013-12-30 2014-01-01 4 pete 2014

在表
A
中,我有日期从
2014-01-01
2014-12-31

 action_date
 2014-01-01
 2014-01-02
 2014-01-03
 ...
 2014-12-31
在表
B
中,我有如下信息

id name action_date deletion_date
1  nik  2013-01-01  2014-02-03
2  tom  2014-06-02  2014-06-30
3  lola 2013-12-30  2014-01-01
4  pete 2014-12-29  1970-01-01

我想将B表中的行连接到每个
A
表行,如果
activation\u date根据错误,由于两个表中的列名相同而出现问题。对表使用别名,并在条件中指定别名。。这将解决问题。

您可以使用WHERE来执行[filtering][1],而不是在ON子句中使用=条件。选择a.*,t3.*从一个t3连接B v3 ON(v3.id=t3.no),其中v3.sdate=t3.actualdate[1]:@Mus7afa,那么在ON语句中应该使用什么条件?检查您的查询,“ON action\u date>=activation\u date”您犯了这一行错误。它应该是“行动日期=激活日期”。选择a.action\u date,b.*从b加入a(a.action\u date=b.action\u date),其中b.action\u date
 action_date id name action_date deletion_date
 2014-01-01  1  nik  2013-01-01  2014-02-03
 2014-01-01  3  lola 2013-12-30  2014-01-01
 2014-01-02  1  nik  2013-01-01  2014-02-03
 2014-01-03  1  nik  2013-01-01  2014-02-03
   [...]
 2014-02-03  1  nik  2013-01-01  2014-02-03

 2014-06-02  2  tom  2014-06-02  2014-06-30
 2014-06-03  2  tom  2014-06-02  2014-06-30
   [...]
 2014-06-03  2  tom  2014-06-02  2014-06-30
 2014-12-29  4  pete 2014-12-29  1970-01-01 
 2014-12-30  4  pete 2014-12-29  1970-01-01 
 2014-12-31  4  pete 2014-12-29  1970-01-01
   SELECT a.action_date, b.*
   FROM  b
   JOIN  a ON action_date>= activation_date
           AND (action_date<=deletion_date OR deletion_date='1970-01-01')