ऐसा लगता है कि आप भागों के संचयी योग से 1 अधिक जैसा कुछ चाहते हैं। सबसे आसान तरीका है:
select t.*,
(case when part = 1 then 0 -- the easy case
else 1 + sum(part) over (order by id)
end) as number
from t;
अगर part
0 और 1 के अलावा अन्य मान ले सकते हैं:
select t.*,
(case when part = 1 then 0 -- the easy case
else 1 + sum( (part = 1)::int ) over (order by id)
end) as number
from t;