我需要基于其他两列的值(唯一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
答案 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;