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.