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 は主キーです カーソルを使用してテーブルを更新する必要があります

助けてください!ありがとう、よろしくハルシャ

4

1 に答える 1

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のデモです。

于 2012-11-16T13:22:05.747 に答える