我有一张大桌子(300万行,大约12列)。我有一个列可以包含重复值 - 这是我的" ID"柱。我有第二列" NUM_ID"我想让它从每个独特的" ID"的值1开始。然后 - 如果我遇到重复的值 - " NUM_ID"然后会提升一个值(到2),依此类推。例如:
ID NUM_ID
1 1
2 1
2 2
2 3
3 1
3 2
4 1
5 1
5 2
5 3
5 4
再次," ID"是预先填充的,我无法更改此列及其值。我的" NUM_ID"列当前是空的 - 我希望有一个sql命令,我可以用来填充列,如上所示?我尝试过使用Python,但更新3M行需要很长时间。另外,如果重要的话,我正在使用PostGresSQL。
帮助?谢谢!
答案 0 :(得分:2)
如果您正在使用SQL Server
,那么您应该使用ROW_NUMBER()
,如下所示:
SELECT *, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) NUM_ID FROM #TM
结果:
ID NUM_ID
1 1
2 1
2 2
2 3
3 1
3 2
4 1
5 1
5 2
5 3
5 4