我有一个名为 Test 的表,其中包含一些重复的行和名为 Col1 的列。当点击 A 时,序列将重置为 0。我想创建一个序列 no 作为结果,如下所示:
Col1:
A
B
B
B
A
B
B
B
B
结果:
0
1
2
3
0
1
2
3
4
--我使用过的查询
SELECT COL1, CASE COL1 WHEN 'A' THEN '0' ELSE TO_CHAR(ROWNUM-0) END AS RESULT
FROM TEST
只会生成:
结果:
0
2
3
4
0
6
7
8
9
最佳答案
这里,col1
在您的问题中是这样排序的,因此必须有一些定义此顺序的标准。假设标准是 PK
列。
因此,我正在考虑存在 PK
列,如您的问题所示,col1
的排序依据是该列。
您可以使用以下查询:
Select col1,
row_number() over (partition by sum_A order by col1) - 1 as result
from
(Select col1,
sum(case when col1 = 'A' Then 1 END) over (order by PK) as sum_A
from test)
干杯!!
关于sql - 如何为选择查询中的重复行创建序列号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57566509/