我在Oracle中有一个包含以下数据的表。
ID VALUE
10 A
10 B
10 C
20 A1
30 C1
30 D1
想要根据ID进行分组,并打印一个序列号在每个组内的新列。
输出应为
ID VALUE GROUPSEQ
10 A 1
10 B 2
10 C 3
20 A1 1
30 C1 1
30 D1 2
可以使用Oracle SQL完成此操作而无需创建任何临时表。
答案 0 :(得分:9)
您需要ROW_NUMBER
SELECT ID, VALUE, row_number() OVER (PARTITION BY ID ORDER BY value) GROUPSEQ
FROM myTable
答案 1 :(得分:1)
你可以试试这个: -
SELECT ID, VALUE, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY VALUE) "GROUPSEQ"
FROM YOUR_TABLE;
答案 2 :(得分:0)
我已经为你写了一个查询。我希望它能解决你的问题:
(SELECT t.*,
ROW_NUMBER ()
OVER (PARTITION BY t.id
ORDER BY t.id)
seq_no
FROM test t);
检查Fiddle