No alcanzo a entender exactamente que es lo que pretendes lograr (por tanto cursor), pero creo que algo como esto se aproxima a lo que necesitas:
Código:
SELECT
NoParte,
SUM(CASE WHEN Almacen = 'M' THEN TonTotales ELSE 0 END) AS AlmacenM,
SUM(CASE WHEN Almacen = 'P' THEN TonTotales ELSE 0 END) AS AlmacenP,
SUM(CASE WHEN Almacen = 'T' THEN TonTotales ELSE 0 END) AS AlmacenT,
SUM(TonTotales) AS Total
FROM tabla
GROUP BY Almacen, NoParte