la UPDATE fatta così prevede che la subquery riporti UN SOLO valore, non un recordset.
devi usare una forma diversa, tipo
codice:
Update sk_generale set Premio=
((anask.coefficente * (SUM(gen.Punti))/100)) * (Lordi_op.lordo *(ana_op.perc_part_time)/13)
from sk_generale gen
join sk_generale gen1
on gen.OP = gen1.OP
--and gen.Punti = gen1.Punti
join ANA_SKILL anask
on gen.SKILL=anask.ID
and gen1.SKILL = anask.ID
join ANA_OP ana_op
on ana_op.CodiceFiscale = gen.OP
and ana_op.CodiceFiscale = gen1.OP
join Lordi_OP
on Lordi_OP.Livello = ana_op.Livello
group by gen.Mese,gen.ID_GRUPPO,gen1.ID_GRUPPO,anask.COEFFICENTE,Lordi_OP.LORDO,ana_op.PERC_PART_TIME,gen1.Mese
HAVING gen.ID_GRUPPO <> gen1.ID_GRUPPO and gen.Mese <> gen1.Mese
ho buttato lì semplificando, sistemala tu