sql - 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
...
任何想法?
解决方案
您需要一个分析函数,例如ROW_NUMBER()
:
SELECT Line, ID,
ROW_NUMBER() OVER (PARTITION BY Line ORDER BY Enum ) AS Enum
FROM tab1
其中该函数从整数 1 开始对Enum
每个组再次枚举每个值,并按当前存在的值排序Line
Enum
也许您需要按Line
and分组ID
,然后使用PARTITION BY Line, ID
而不是PARTITION BY Line
。
在这种情况下,两者都会产生相同的结果。
推荐阅读
- javascript - Redux Saga EventChannel: TypeError: (0, _reduxSaga.take) 不是函数
- android - Android:文本超过一行的TextView不可点击/长点击
- typescript - TypeScript:对象作为类属性(非静态或静态)
- django - 我在 /admin/login/ 处不断收到 RelatedObjectDoesNotExist。如何通过一对一关系在 Django 中成功创建用户配置文件?
- bootstrap-4 - 如何在 bundle.js 中使用元名称?
- python - Python 格式整数
- java - .getResource 在资源文件夹中找不到文件
- ios - iOS 8 - 当应用程序不活动时显示来电(没有 CallKit)
- php - 有没有办法让这些查询更短?
- ruby - 方法级联在这里是可能的吗?