Hola Erick21:
Creo que el problema está en que al generar una tabla temporal no estás especificando ninguna llave ni indice. ¿por qué no hacer el inner join directamente con la tabla? ¿hay alguna razón en especial para hacerlo de esta manera?.
Yo trataría de hacer lo siguiente:
Código SQL:
Ver originalSELECT
SUM(M_Sueldo) AS Total,
SUM(CASE WHEN R.M_Sueldo = 0 THEN R.M_Sueldo+R.N_Bonif ELSE 0 END) AS Deuda
FROM M_PAGOS R INNER JOIN
M_PERSONAL P ON P.Id_Per=R.Id_Per
WHERE
R.IdTram IN ('02.01','11.00','11.04') AND
R.F_Año BETWEEN '1997' AND '2010' AND
p.IdCp = 820
o también esto debería funcionar...
Código SQL:
Ver originalSELECT
SUM(M_Sueldo) AS Total,
SUM(CASE WHEN R.M_Sueldo = 0 THEN R.M_Sueldo+R.N_Bonif ELSE 0 END) AS Deuda
FROM M_PAGOS R INNER JOIN
M_PERSONAL P ON P.Id_Per=R.Id_Per AND p.IdCp = 820
WHERE
R.IdTram IN ('02.01','11.00','11.04') AND
R.F_Año BETWEEN '1997' AND '2010'
Revisa también el Plan de Ejecución de la consulta desde el Management Studio, para ver el diagnóstico que te da.
EDITADO: básicamente es la misma respuesta que te da el compañero Libra, solo que 8 minutos más tarde, jejeje. saludos
Saludos
Leo.