我有一个表,其中有一列名为“ID”
ID 列有 8 行,值为 100,100,100,200,200,300,300,300
我想创建一个名为“Row_ID”的新列,它应该查看 ID 列并为找到重复 id 的每一行提供唯一的行号,并在找到不同的值时重新启动计数器。
例如,对于上述 ID 列的值,Row 列应如下所示
1,2,3,1,2,1,2,3
我有一个表,其中有一列名为“ID”
ID 列有 8 行,值为 100,100,100,200,200,300,300,300
我想创建一个名为“Row_ID”的新列,它应该查看 ID 列并为找到重复 id 的每一行提供唯一的行号,并在找到不同的值时重新启动计数器。
例如,对于上述 ID 列的值,Row 列应如下所示
1,2,3,1,2,1,2,3
对于 Oracle 数据库
SELECT ROW_NUMBER()
OVER (PARTITION BY ID ORDER BY ID) AS "ROW_ID"
FROM (
SELECT 100 ID FROM dual
UNION ALL
SELECT 100 ID FROM dual
UNION ALL
SELECT 100 ID FROM dual
UNION ALL
SELECT 200 ID FROM dual
UNION ALL
SELECT 200 ID FROM dual
UNION ALL
SELECT 300 ID FROM dual
UNION ALL
SELECT 300 ID FROM dual
UNION ALL
SELECT 300 ID FROM dual
)