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