Sql server 2005 用下一个非空值填充列空值
是否有一个简单的查询可以用该列中的下一个非空值来填补该列中的空白?我想要一个包含如下数据的列:Sql server 2005 用下一个非空值填充列空值,sql-server-2005,tsql,Sql Server 2005,Tsql,是否有一个简单的查询可以用该列中的下一个非空值来填补该列中的空白?我想要一个包含如下数据的列: -------------------- | ID | Version | -------------------- | 1 | '162.39' | -------------------- | 2 | NULL | -------------------- | 3 | NULL | -------------------- | 4 | '162.4
--------------------
| ID | Version |
--------------------
| 1 | '162.39' |
--------------------
| 2 | NULL |
--------------------
| 3 | NULL |
--------------------
| 4 | '162.40' |
--------------------
| 5 | '162.41' |
--------------------
| 6 | NULL |
--------------------
| 7 | NULL |
--------------------
| 8 | '162.42' |
--------------------
| 9 | '162.42' |
--------------------
| 10 | NULL |
--------------------
这样结束
--------------------
| ID | Version |
--------------------
| 1 | '162.39' |
--------------------
| 2 | '162.40' |
--------------------
| 3 | '162.40' |
--------------------
| 4 | '162.40' |
--------------------
| 5 | '162.41' |
--------------------
| 6 | '162.42' |
--------------------
| 7 | '162.42' |
--------------------
| 8 | '162.42' |
--------------------
| 9 | '162.42' |
--------------------
| 10 | NULL |
--------------------
最后一个值可以是
'162.42'
或保持为NULL
是的,您可以使用包含相关子查询的查询,该查询将返回其下方ID的前1个值。类似以下内容:(注意仅来自内存的代码)
然后,您可以使用此查询启动update语句来更新您的表。是的,您可以使用包含相关子查询的查询,该查询将返回其下ID的前1个值。类似以下内容:(注意仅来自内存的代码) 然后,您可以使用此查询启动update语句来更新您的表。尝试以下操作:
UPDATE table t1
SET Version = (
SELECT TOP 1 Version
FROM table t2
WHERE t2.id > t1.id
AND Version IS NOT NULL
ORDER BY t2.ID ASC
)
WHERE t1.Version IS NULL
我没有试过,也许你需要修改一些细节。试试这个:
UPDATE table t1
SET Version = (
SELECT TOP 1 Version
FROM table t2
WHERE t2.id > t1.id
AND Version IS NOT NULL
ORDER BY t2.ID ASC
)
WHERE t1.Version IS NULL
我没有尝试过,也许你需要修改一些细节。@sll我不知道这有什么区别,ID没有更新?我只是想确定我的想法是否可以实现,这取决于下一条记录的ID都大于previous@sll我看不出有什么区别,ID没有得到更新?我只是想确定我的想法是否能够实现,这取决于下一条记录的ID大于上一条记录的事实