填充空行,直到找到下一个值



可以使用和更新(T-SQL)用前一个值填充空行,直到找到值为

的行
2022年5月24日2022年5月23日

一种可能性是在update中使用相关子查询:

update t 
set date = (select min(date) from t t2 where t2.id < t.id)
where date is null

演示小提琴

我们想使用last_value但忽略null在SQL Server中不起作用。
可以使用CTE和内联子查询。

create table t(id int, date_ varchar(10));
insert into t values (1,'2022-05-24'),(8,'2022-05-23');
insert into t (id) values(2),(3),(4),(5),(6),(7),(9),(10);

受影响的10行

with cte as(
select 
id, 
date_,
(select max(id) from t t2 where t2.id <= t.id and date_ is not null ) idd
from t)
select
id,
(select date_ from cte c where c.id = d.idd) "date"
from cte d
order by id
id |日期-: |:---------1 | 2022-05-242 | 2022-05-243 | 2022-05-244 | 2022-05-245 | 2022-05-246 | 2022-05-247 | 2022-05-248 | 2022-05-239 | 2022-05-2310 | 2022-05-23

db<此处小提琴>

相关内容

  • 没有找到相关文章

最新更新