So aus dem Kopf bekomme ich das nicht mehr hin.
Die Aufgabenstellung erscheint mir etwas zu komplex für das Forum.

Mal dir ein Schaubild bzgl. des Datenflusses, der Gruppierung und Summierung, überlege dir wie du es programmieren würdest.

Ein Update sähe im Prinzip so aus:

update mytable a
set myfield = (select ergebnis ....)
where ... Bedingung für zu ändernde Sätze ...