如何从表中读取数据并分配序列号?

时间:2016-11-16 22:12:15

标签: sql sql-server sql-server-2012 sequence alter-table

我正在尝试创建一个列添加到表,但我试图找出一种方法为此列分配序列号。

这就是我所拥有的:

ID           C_Seq_No        D_Seq_No         Type
123              1             NULL            02
123              1             NULL            04
123              1             NULL            06
123              2             NULL            03
123              2             NULL            05
123              2             NULL            07

这就是我想要的表格:

ID           C_Seq_No        D_Seq_No         Type
123              1             1               02
123              1             2               04
123              1             3               06
123              2             1               03
123              2             2               05
123              2             3               07

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

您正在寻找row_number()

select t.*,
       row_number() over (partition by id, c_seq_no order by type) as d_seq_no
from t;

如果您确实想要更新,可以使用可更新的CTE:

with toupdate as (
      select t.*,
             row_number() over (partition by id, c_seq_no order by type) as new_d_seq_no
      from t
     )
update toupdate
    set d_seq_no = new_d_seq_no;