Sql server 2008 r2 我必须使用游标更新表

Sql server 2008 r2 我必须使用游标更新表,sql-server-2008-r2,Sql Server 2008 R2,我需要帮助 我有一张这样的桌子: itemcode itemiicode itemordercode serialnum cpserialnum 4 2 4 21 21 5 2 5 -1 -1 6 3 6 14 14 7 4 7

我需要帮助

我有一张这样的桌子:

itemcode itemiicode itemordercode serialnum cpserialnum
4         2           4           21         21
5         2           5           -1         -1
6         3           6           14         14
7         4           7           15         15
8         5           8           41         41
9         6           9           72         72
10        6           10          -1         -1
11        6           11          -1         -1
UPDATE items
SET cpserialnum =
(SELECT TOP 1 cpserialnum 
 FROM items innerItems
 WHERE innerItems.itemordercode <= items.itemordercode
 AND cpserialnum != -1
ORDER BY itemordercode DESC)
 FROM items

SELECT * FROM items
我想要一个使用游标的结果表,如下所示

itemcode itemiicode itemordercode serialnum cpserialnum
4         2            4          21         21
5         2            5          -1         21
6         3            6          14         14
7         4            7          15         15
8         5            8          41         41
9         6            9          72         72
10        6            10         -1         72
11        6            11         -1         72
itemcode是主键 使用游标,我们必须更新表

请帮忙! 谢谢和问候
Harsha

如我所见,您希望更新列:cpserialnum

规则是:如果当前值为-1,则应插入上一个值

为此,您不需要使用游标,但可以通过简单的内部选择来实现,如下所示:

itemcode itemiicode itemordercode serialnum cpserialnum
4         2           4           21         21
5         2           5           -1         -1
6         3           6           14         14
7         4           7           15         15
8         5           8           41         41
9         6           9           72         72
10        6           10          -1         -1
11        6           11          -1         -1
UPDATE items
SET cpserialnum =
(SELECT TOP 1 cpserialnum 
 FROM items innerItems
 WHERE innerItems.itemordercode <= items.itemordercode
 AND cpserialnum != -1
ORDER BY itemordercode DESC)
 FROM items

SELECT * FROM items

这是一个演示。

您想更新哪一列?什么价值?你试过什么?