Мне нужны примеры данных, чтобы быть уверенным (и тщательного тестирования), но похоже, что это может сделать работу на основе набора. Курсоры - очень плохой выбор для такого рода обработки из-за проблем с производительностью, особенно когда набор данных становится большим.
update A
set MontoTotal = sum(d.PrecioAlquiler) * 0.3
From Alquiler A
join (select a.ID, count(d.ID) as NumeroPelicula
from Alquiler a inner join DetalleAlquiler d on a.ID = d.IDAlquiler
group by a.ID ) b
on a.id = b.id
JOIN DetalleAlquiler d
ON d.IDAlquiler = b.ID
where b.NumeroPelicula >=3