我有一个表,我需要分配一个数字序列,然后根据另一列中的值将数字序列重新启动为1。
这是我的表:
你可以这样做:
select x.*, row_number() over(partition by g order by date) as instance
from (select t.*, sum(indicator) over(order by date) as g from t) x
结果:
Date Name Indicator g instance
----------- ------ ---------- -- --------
2022-01-12 Test1 1 1 1
2022-02-12 Test2 null 1 2
2022-03-12 Test3 null 1 3
2022-04-12 Test4 null 1 4
2022-05-12 Test5 1 2 1
2022-06-12 Test6 null 2 2
2022-07-12 Test7 1 3 1
2022-08-12 Test8 null 3 2
参见运行示例:db<>fiddle。