Por lo que entiendo quieres poner - en todos los registros que cumplan resultadocalifresp=0 and resultadocalifhab=0 and totalevalu=0 - en el campo resultadocalifresp de la tabla resultadoevalu un único valor que sacas de una subconsulta.
Con este update pones un único valor a cada regisro. Sería como hacer lo siguiente:
Código SQL
[-]
var_temporal = select sum(cc.calificacion) /max(codigoresponsabilidad) as totalcaliresp
from personal p
inner join calificacionresponsabilidadjefe cc on cc.cedula=p.cedula
group by cc.fechaevaluacion,p.cedula
update resultadoevalu
set resultadocalifresp=var_temporal
where resultadocalifresp=0 and resultadocalifhab=0 and totalevalu=0
Si la subconsulta te arroja mas de un valor, debes elegir cual vas a usar para hacer el update.
Tienes varias opciones min, max, avg, fist ...
Código SQL
[-]
update resultadoevalu
set resultadocalifresp=(
select min sum(cc.calificacion) /max(codigoresponsabilidad) as totalcaliresp
from personal p
inner join calificacionresponsabilidadjefe cc on cc.cedula=p.cedula
group by cc.fechaevaluacion,p.cedula)
where resultadocalifresp=0 and resultadocalifhab=0 and totalevalu=0
Si no es eso lo que quieres, explícanos la situación un poco más detalladamente.