我有两张如下表格(日期格式:yyyy-MM-dd)。我想要的是根据它们的开始时间和结束时间来记录表A和表B之间的连接历史
P.S。我忘了澄清我下面给出的例子并非详尽无遗。在实际情况中,有3种可能性:(a)在时间T,层次结构在时间T改变而不是监督者(b),监督者改变而不是等级(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中执行此操作? 非常感谢! :)
答案 0 :(得分:0)
这可能会对你有所帮助。
select a.hierarchy ,b.supervisor ,a.startime ,a.endtime from TableA a inner join TableB b on a.startime =b.startime and
a.endtime=b.endtime