Это можно сделать с помощью условного агрегирования (при условии, что на код приходится по одной строке на код).
select id
,coalesce(max(case when code = 'code1' then cast(amount as int) end), 0) -
coalesce(max(case when code = 'code2' then cast(amount as int) end), 0) +
coalesce(max(case when code = 'code3' then cast(amount as int) end), 0) -
coalesce(max(case when code = 'code4' then cast(amount as int) end), 0)
from tbl
group by id