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

SQL Script to populate a new field with auto number based on groups of other columns

我需要根据其他两列的值(唯一 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

您的结果描述为:

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;