Ну, 0
не является положительным.Но, в любом случае, каждая группа кажется идентифицированной по количеству неотрицательных значений после it.Однако, это производит нисходящее число, и вы хотите возрастающее число.Легко исправить, используя dense_rank()
.
Наконец, получение добавляемых букв не имеет смысла.Итак, я просто добавлю последнюю часть в отдельный столбец, и вы сможете выяснить, как объединить информацию с номером счета:
select acct_nbr,
dense_rank() over (partition by acct_nbr order by grp desc) as modifier,
row_num, sys_dt, end_bal
from (select t.*,
sum(case when end_bal >= 0 then 1 else 0 end) over (partition by acct_nbr order by sys_dt) as grp
from t
) t;