Wie immer gibts mehrere Möglichkeiten:

select ...
, (select sum(Wert) from tab1 b
where a.key = b.key and b.field='1'
) Kosten1
, (select sum(Wert) from tab1 b
where a.key = b.key and b.field='2'
) Kosten2
, ...
from tab1 a
where ...

Ggf. ist der Subselect noch in coalesce zu verpacken, da es durchaus auch mal keine Werte geben kann und wenn man NULL nicht verarbeiten will:

coalesce( (Subselect), 0) KostenX

Da du auch noch Group By hast, ist der Subselect noch mal zu aggregieren:

sum( coalesce( (Subselect), 0) ) KostenX