You could also do it with preceeding load, but it's a bit harder to understand.
,MAX(Final.WorkerCoef) As Final.WorkerCoef
,MAX(Final.MachineCoef) As Final.MachineCoef
Group by Final.Act;
ACT AS Final.Act
,If (PARAM = 'W', COEF) AS Final.WorkerCoef
,If (PARAM = 'M', COEF) AS Final.MachineCoef
The second part is your's and you get 6 rows. In preceeding load (first part) I just aggregated the max values.
You have to be careful - these versions only work when you have one W and one M transaction - otherwise you should use some other aggregation function.