Selección de SUMA de los valores TOP 2 dentro de una tabla con GROUP múltiple en SQL

He estado jugando con conjuntos en SQL Server 2000 y tengo la siguiente estructura de tabla para una de mis tablas temporales (#Periods):

    RestCTR     HoursCTR    Duration    Rest
    ----------------------------------------
    1           337         2           0
    2           337         46          1
    3           337         2           0
    4           337         46          1
    5           338         1           0
    6           338         46          1
    7           338         2           0
    8           338         46          1
    9           338         1           0
    10          339         46          1
    ...

Lo que me gustaría hacer es calcular la suma de los 2 períodos de descanso más largos para cada HoursCTR, preferiblemente usando conjuntos y tablas temporales (en lugar de cursores o subconsultas anidadas).

Aquí está la consulta ideal que simplemente no funcionará en SQL (no importa cuántas veces lo ejecute):

Select HoursCTR, SUM ( TOP 2 Duration ) as LongestBreaks
FROM #Periods
WHERE Rest = 1
Group By HoursCTR    

El HoursCTR puede tener cualquier cantidad de períodos de descanso (incluido ninguno).

Mi solución actual no es muy elegante y básicamente implica los siguientes pasos:

Obtenga la duración máxima de descanso, agrupe por Horas CTRSeleccione la primera fila (mínima) RestCTR que devuelve esta duración máxima para cada HoursCTRRepita el paso 1 (excluyendo las filas ya recopiladas en el paso 2)Repita el paso 2 (nuevamente, excluyendo las filas recopiladas en el paso 2)Combine las filas RestCTR (de los pasos 2 y 4) en una sola tablaObtenga la SUMA de la duración señalada por las filas en el paso 5, agrupada por HoursCTR

Si hay funciones establecidas que reducen este proceso, serían muy bienvenidas.

Respuestas a la pregunta(3)

Su respuesta a la pregunta