Try a query:
;
with T as
(
select 'New' as [Process Description], Salary as Amount, DepartmentId as [New department], 0 as ad, ROWNUMBER, 0 as i
from SrcData
where old_DepartmentId = DepartmentId
union all
select 'Cancel', null, d2.old_DepartmentId, 0, d2.ROWNUMBER, 1
from SrcData d2
inner join SrcData d1 on d1.ROWNUMBER = d2.ROWNUMBER - 1
where d2.old_DepartmentId <> d2.DepartmentId
union all
select 'Reset', null, d2.DepartmentId, d2.old_DepartmentId, d2.ROWNUMBER, 2
from SrcData d2
inner join SrcData d1 on d1.ROWNUMBER = d2.ROWNUMBER - 1
where d2.old_DepartmentId <> d2.DepartmentId
union all
select 'New', d2.Salary, d2.DepartmentId, 0, d2.ROWNUMBER, 3
from SrcData d2
inner join SrcData d1 on d1.ROWNUMBER = d2.ROWNUMBER - 1
where d2.old_DepartmentId <> d2.DepartmentId
)
select
case [Process Description]
when 'Cancel' then concat('Cancel for ', [New department])
when 'Reset' then concat('Reset for above ', ad)
else [Process Description]
end as [Process Description],
format(
case [Process Description]
when 'New' then Amount
when 'Cancel' then -sum(Amount) over (order by ROWNUMBER, i)
when 'Reset' then sum(Amount) over (order by ROWNUMBER, i)
end, '0.##') as Amount,
[New department]
from T
order by ROWNUMBER, i