【发布时间】:2018-03-06 16:32:29
【问题描述】:
我有两个如下表(日期格式:yyyy-MM-dd)。我想要的是根据开始时间和结束时间记录表 A 和表 B 之间的连接历史
附:我忘了澄清我在下面给出的例子并不详尽。在实际情况下,有 3 种可能性:(a) 在时间 T,层次结构发生变化但主管没有变化 (b) 在时间 T,主管发生变化但层次结构不变 (c) 两者同时变化。
1) 表 A - 层次结构
+--------------+------------+------------+
| hierarchy | startime | endtime |
+--------------+------------+------------+
| Value 1 | 2017-01-01 | 2017-03-01 |
| Value 2 | 2017-03-01 | 2017-04-01 |
| Value 3 | 2017-04-01 | NULL |
+--------------+------------+------------+
2) 表 B - 主管
+--------------+------------+------------+
| supervisor | startime | endtime |
+--------------+------------+------------+
| supervisor 1 | 2017-01-01 | 2017-02-01 |
| supervisor 2 | 2017-03-01 | NULL |
+--------------+------------+------------+
3) 结果表
+-----------+--------------+------------+------------+
| hierarchy | supervisor | startime | endtime |
+-----------+--------------+------------+------------+
| Value 1 | supervisor 1 | 2017-01-01 | 2017-02-01 |
| Value 1 | NULL | 2017-02-01 | 2017-03-01 |
| Value 2 | supervisor 2 | 2017-03-01 | 2017-04-01 |
| Value 3 | supervisor 2 | 2017-04-01 | NULL |
+-----------+--------------+------------+------------+
任何人都知道如何在 IMPALA/SQL 中执行此操作? 非常感谢! :)
【问题讨论】:
-
从 TableA 中选择层次结构、主管、开始时间、结束时间 a 内部连接 TableB b on a.starttime =b.starttime
标签: sql join impala date-range