我有以下表格:
tbl1:
V1 | V2 | Time
x A 1
x B 4
y C 5
tbl2:
V1 | Time
x 2
x 4
y 1
我想加入他们的方式,我得到以下结果
Tbl2.V1 | Tbl1.V2 | Tbl2.Time
x A 2
x B 4
y null 1
换句话说,我想加入v1上的表并从tbl2得到v2,其中tbl1.time<tbl2.time和(tbl2.time-tbl1.time)得到最小值。有什么建议吗?
1条答案
按热度按时间zyfwsgd61#
在其他数据库中,可以使用相关子查询。这不是一个选择。创建笛卡尔积然后进行聚合是另一种方法——它适用于较小的表。
另一种方法是交错两个表,使用累积函数,然后从第一个表中选择:
我没有在Hive中使用这种方法。我发现它在oracle、sql server和postgres中非常有效。