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 订购。 检查这个@Sql Fiddle

于 2012-06-12T09:47:30.553 回答