我有一个包含3个字段的表。


如果结束时间是 NULL
,我需要用相同 ID的最近时间替换
<代码> ------------------------------ ----&#XA; | ID | Start_time | End_time |&#xA; ----------------------------------&#xA; | 1 | 2016-01-01 | NULL |&#xA; | 2 | 2016-01-01 | 2016-01-02 |&#xA; | 1 | 2016-01-02 | 2016-01-03 |&#xA; | 1 | 2016-01-03 | 2016-01-04 |&#xA;&#xA;&#xA;
预期输出
&#xA;&#xA; - --------------------------------&#XA; | ID | Start_time | End_time |&#xA; ---------------------------------&#xA; | 1 | 2016-01-01 | 2016-01-02 |&#xA; | 2 | 2016-01-01 | 2016-01-02 |&#xA; | 1 | 2016-01-02 | 2016-01-03 |&#xA; | 1 | 2016-01-03 | 2016-01-04 |&#xA;
&#xA;
答案 0 :(得分:0)
您可以使用id的子查询分组来获取min end_time
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