2

私はこのデータを持っています

AnsID  QuesID  AnsOrder
-----------------------
1       5       NULL
2       5       NULL
3       5       NULL
4       5       NULL
5       5       NULL
6       3       NULL
7       3       NULL
8       3       NULL
9       3       NULL
10      3       NULL
11      4       NULL
12      4       NULL
13      4       NULL
14      4       NULL
15      4       NULL
16      7       NULL
17      9       NULL
18      9       NULL
19      9       NULL
20      9       NULL
21      8       NULL
22      8       NULL
23      8       NULL
24      8       NULL

この形式に更新したい

AnsID  QuesID  AnsOrder
-----------------------

1       5       1
2       5       2
3       5       3
4       5       4    
5       5       5
6       3       1
7       3       2
8       3       3
9       3       4
10      3       5
11      4       1
12      4       2
13      4       3
14      4       4
15      4       5
16      7       1
17      9       1
18      9       2
19      9       3
20      9       4
21      8       1
22      8       2
23      8       3
24      8       4

基本的に、読みやすくするために、このようにQuesID列に従って昇順でAnsOrder列を更新したいと思います。

AnsID  QuesID  AnsOrder
-----------------------

1       5       1
2       5       2
3       5       3
4       5       4    
5       5       5

6       3       1
7       3       2
8       3       3
9       3       4
10      3       5

11      4       1
12      4       2
13      4       3
14      4       4
15      4       5

16      7       1

17      9       1
18      9       2
19      9       3
20      9       4

21      8       1
22      8       2
23      8       3
24      8       4
4

1 に答える 1

3

quesIDによってrow_numbersを生成し、次のようにAnsOrderに割り当てることができます。

; with ord as (
  select *,
         row_number() over (partition by quesID
                            order by AnsID) rn
    from table1
)
update ord 
   set ansorder = rn

一貫性を保つためにAnsIDで注文しました。 これをチェックしてください@SqlFiddle

于 2012-06-12T09:47:30.553 に答える