【问题标题】:join two date ranges加入两个日期范围
【发布时间】: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


【解决方案1】:

这可能会对您有所帮助。

  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

【讨论】:

  • 对不起,我忘了澄清有时 (a) 层次结构改变但主管没有改变 (b) 在时间 T,主管改变但层次不改变 (c) 两者同时改变。
  • 这个答案对您有帮助吗?
猜你喜欢
  • 2020-05-23
  • 2017-04-27
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多