Вы можете использовать оконные функции:
select transaction, type, value,
max(case when type = 'b' then value end) over (partition by transaction) as new_value
from t;
Если вы просто хотите не-1004 * значение для транзакции:
select transaction, type, value,
max(value) over (partition by transaction) as new_value
from t;