Werte verschiedener Zeilen addieren

Ich habe eine Tabelle mit den Spalten id serial, signal integer, typ integer, value double.
Der hier interesierende Typ hat die Werte -1, 0 1.

id         signal         typ         value
-------------------------------------------
1              1            -1         -2.0
2              1             0         10.0
3              1             1          1.0
4              2             0          5.0  zu diesem Signal existieren keine Typen -1, 1
5              3             0         20.0
6              3            -1         -3.0
7              3            1           5.0
...

Ich möchte einen View erstellen, bei welchem pro Signal zum Wert vom Typ=-1 und Typ=1 jeweils der Wert vom Typ=0 addiert wird.
Das Ergebis wäre dann folgendes:

id         signal         typ         value
----------------------------------------
id         signal         typ         value
-------------------------------------------
1              1            -1          8.0
2              1             0         10.0
3              1             1         11.0
4              2             0          5.0
5              3             0         20.0
6              3            -1         17.0
7              3            1          25.0
...

Kann das mit einer Abfrage gemacht werden?

Ich möchte mich für das unüberlegte Einstellen der Anfrage entschuldigen. Die Abfrage ist mit Boardmitteln von PostgreSQL einfach. Das Thema hat sich erledigt.

select  t.*
        , t.value + case when t.typ != 0 then sum(case when t.typ = 0 then t.value else 0 end) over(partition by signal) else 0 end as value_calculated
    from t;

 id | signal | typ | value | value_calculated
----+--------+-----+-------+------------------
  1 |      1 |  -1 |    -2 |                8
  2 |      1 |   0 |    10 |               10
  3 |      1 |   1 |     1 |               11
  4 |      2 |   0 |     5 |                5
  5 |      3 |   0 |    20 |               20
  6 |      3 |  -1 |    -3 |               17
  7 |      3 |   1 |     5 |               25
(7 Zeilen)

@ frastr
Vielen Dank für Deine Antwort. Das Konstrukt mit OVER, PARTITION ist neu für mich.
Meine Lösung mit expliziten SubQueries ist ein paar Zeilen länger.
Viele Grüße nach Hoyerswerda