如何编写基于值的Oracle SQL重置计数器?

时间:2018-11-28 22:26:15

标签: oracle

如何像以下示例一样重置计数器(我需要在“我需要生成的计数器”列中生成计数器?

enter image description here

2 个答案:

答案 0 :(得分:0)

好像每个大于1的值都会重置计数器,对吗?

如果是这样,您可以根据在当前行(包括)之前出现值> 1的次数,首先分配一个组号。因此,第1到11行将是组0,第12和13行将是组1,依此类推。

然后,您可以应用row_number窗口函数来生成按该组划分的编号:

2.5.0

答案 1 :(得分:0)

这是一个替代示例,该示例使用解析函数而不是标量子查询来生成组:

with grp as (
select t.*
     , sum(case gapnoofdays when 1 then 0 else 1 end) over (partition by customer_id order by urn) grp
  from your_table t
)
select grp.*
     , row_number() over (partition by customer_id, grp order by urn) n
  from grp;