Вам необходимо определить группы, а затем использовать оконные функции.Используйте lag()
, чтобы определить, где начинаются группы, совокупную сумму, чтобы определить группу, а затем окончательную сумму:
select t.*,
sum(SERV_UNIT_CNT) over (partition by SRC_MBR_ID, grp order by SERV_FROM_DATE) as sum_serv_unit_cnt
from (select t.*,
sum(case when prev_sfd > SERV_FROM_DATE - 14 then 0 else 1 end) over (partition by SRC_MBR_ID order by SERV_FROM_DATE) as grp
from (select t.*,
lag(SERV_FROM_DATE) over (partition by SRC_MBR_ID order by SERV_FROM_DATE) as prev_sfd
from t
) t
) t;