2012-11-15 83 views
0

我需要幫助!使用光標我必須更新表

我有這樣的一個表:

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 

我要像使用遊標以下

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

+0

你想要更新哪一列?什麼價值?你有什麼嘗試? – Arion

回答

1

正如我所看到的,您要更新列:cpserialnum。

規則是:如果當前值爲-1則應該插入以前的值

對於這一點,你不需要使用CURSOR,但一個簡單的內選擇能做好,像這樣:

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 

這裏是一個SQLFiddle演示。