Поскольку вы используете MSSQL, вы можете написать CTE, чтобы получить искомый результат.
Попробуйте этот CTE:
declare @tab table
(
id int,
msg char(3)
)
insert into @tab
values
(1, ''),
(2, ''),
(3, ''),
(4, ''),
(5, 'Beg'),
(6, 'End'),
(7, ''),
(8, 'Beg'),
(9, ''),
(10, ''),
(11, ''),
(12, 'End')
;with cte as
(
select top 1 tab.id, tab.msg
from @tab tab
order by tab.id
union all
select tab.id, case when tab.msg = '' and cte.msg = 'beg' then cte.msg else tab.msg end
from @tab tab
inner join cte cte on cte.id + 1 = tab.id
)
select *
from cte