首页 > 解决方案 > Oracle - 通过简单查询显示增量 ID

问题描述

我有一个非常简单的查询,如下所示:

SELECT Line, ID, Enum 
  FROM tab1

结果是这样的:

在此处输入图像描述

Line  id   enum
A     10   1
A     10   2
A     10   3
A     10   4

...
B     20   4
B     20   5
B     20   6
B     20   7

...

我希望,对于每个 Line/id,anum 从 1 开始,就像这样:

Line  id   enum
A     10   1
A     10   2
A     10   3
A     10   4
...
B     20   1
B     20   2
B     20   3
B     20   4
...

任何想法?

标签: sqloracleoracle11ganalytic-functions

解决方案


您需要一个分析函数,例如ROW_NUMBER()

SELECT Line, ID, 
       ROW_NUMBER() OVER (PARTITION BY Line ORDER BY Enum ) AS Enum
  FROM tab1

其中该函数从整数 1 开始对Enum每个组再次枚举每个值,并按当前存在的值排序LineEnum

也许您需要按Lineand分组ID,然后使用PARTITION BY Line, ID而不是PARTITION BY Line

在这种情况下,两者都会产生相同的结果。

Demo


推荐阅读