Oracle-通过简单查询显示增量ID

问题描述

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

SELECT Line,ID,Enum 
  FROM tab1

结果是这样的:

enter image description here

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
...

有什么想法吗?

解决方法

您需要一个诸如ROW_NUMBER()之类的解析函数:

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

该函数从整数1开始逐个枚举每个Enum组的每个Line值,并按当前存在的Enum值进行排序

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

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

Demo