2022年5月24日 2022年5月23日
可以使用和更新(T-SQL)用前一个值填充空行,直到找到值为
的行一种可能性是在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<此处小提琴>此处小提琴>