如果结束时间值为空,则用相同id的下一个开始时间替换该值

zqdjd7g9  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(250)

我有一张有三个字段的table。
开始时间
结束时间
身份证件
如果结束时间是 NULL ,我需要替换为同一时间的最近时间 ID .

----------------------------------
| ID | Start_time  |    End_time |
----------------------------------
| 1  | 2016-01-01  |        NULL |
| 2  | 2016-01-01  |  2016-01-02 |
| 1  | 2016-01-02  |  2016-01-03 |
| 1  | 2016-01-03  |  2016-01-04 |

预期产量

---------------------------------
| ID | Start_time |    End_time |
---------------------------------
| 1  | 2016-01-01 |  2016-01-02 |
| 2  | 2016-01-01 |  2016-01-02 |
| 1  | 2016-01-02 |  2016-01-03 |
| 1  | 2016-01-03 |  2016-01-04 |
uxhixvfz

uxhixvfz1#

您可以使用id的子查询分组来获取最小结束时间

select a.id, a.Start_time
      , case when a.End_time is null then t.min_end_time else  a.End_time end End_time 
  from my_table 
  inner join (
  select id, min(End_time) min_end_time
  from my_table 
  group by id ) t on t.id = a.id

相关问题