如何使用Oracle中的SQL查询为组中的每个元素添加序列号

时间:2015-09-01 14:57:04

标签: sql oracle oracle11g

我在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完成此操作而无需创建任何临时表。

3 个答案:

答案 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