gpt4 book ai didi

sql-server - 如果值为空,则获取以前的值 sql server 2008

转载 作者:行者123 更新时间:2023-12-04 05:04:00 26 4
gpt4 key购买 nike

我有一个看起来像这样的 table

Id Description
5 Null
4 This is a description
3 This is a description
2 Null
1 Null

我需要创建一个更新语句,如果前一个值不为空,它将更新空值。
Id Description
5 This is a description
4 This is a description
3 This is a description
2 Null
1 Null

任何建议或帮助将不胜感激。

最佳答案

我认为这就是你要找的:

update toupdate
set description = updateto.description
from yourtable toupdate
join yourtable updateto on updateto.id = toupdate.id - 1
where updateto.description is not null
and toupdate.description is null;

SQL Fiddle Demo

这会产生以下结果:
ID  DESCRIPTION
5 This is a description
4 This is a description
3 This is a description
2 (null)
1 (null)

编辑:正如 Aaron Bertrand 的评论所指出的那样。

如果您的 ID 不连续,您可以使用 row_number()要加入的函数而不是 id:
with cte as (
select *, row_number() over (order by (select null)) rn
from yourtable
)
update toupdate
set description = updateto.description
from cte toupdate
join cte updateto on toupdate.rn = updateto.rn - 1
where updateto.description is not null
and toupdate.description is null;

您可以根据需要按条件更改订单。

Updated SQL Fiddle

关于sql-server - 如果值为空,则获取以前的值 sql server 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15754472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com