SQL脚本根据其他列的组使用自动编号填充新字段

时间:2018-08-24 00:32:08

标签: sql sql-server tsql auto-increment

我需要基于其他两列的值(唯一C1-C2值的唯一ID)填充具有自动增量ID的列(C3)

当前

  C1        C2      C3
------------------------------
    X       A       null
    X       A       null
    Y       A       null
    Z       B       null
    Z       B       null
    Z       B       null

所需

  C1        C2      C3
------------------------------
    X       A       1
    X       A       1
    Y       A       2
    Z       B       3
    Z       B       3
    Z       B       3

1 个答案:

答案 0 :(得分:1)

您的结果描述如下:

select c1, c2, dense_rank() over (order by c1)
from t;

您可能打算:

select c1, c2, dense_rank() over (order by c1, c2)
from t;

(但这比示例数据所需的还要复杂。)

这取决于值列本身的顺序。我猜您有某种ID,并且想要该ID排序的行。同样的想法仍然成立,但您使用的是最小ID:

select c1, c2,
       dense_rank() over (order by minid)
from (select t.*, min(id) over (partition by c1, c2) as minid
      from t
     ) t;