Selecionando SOMA dos valores TOP 2 em uma tabela com vários GROUP no SQL

Joguei com conjuntos no SQL Server 2000 e tenho a seguinte estrutura de tabela para uma das minhas tabelas temporárias (#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
    ...

O que eu gostaria de fazer é calcular a soma dos 2 períodos de descanso mais longos para cada HoursCTR, de preferência usando conjuntos e tabelas temporárias (em vez de cursores ou subconsultas aninhadas).

Aqui está a consulta dos sonhos que simplesmente não funciona no SQL (não importa quantas vezes eu a execute):

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

O HoursCTR pode ter qualquer número de períodos de descanso (incluindo nenhum).

Minha solução atual não é muito elegante e envolve basicamente as seguintes etapas:

Obtenha a duração máxima do descanso, agrupe por HoursCTRSelecione a primeira linha (min) RestCTR que retorna essa duração máxima para cada HoursCTRRepita a etapa 1 (excluindo as linhas já coletadas na etapa 2)Repita a etapa 2 (novamente, excluindo as linhas coletadas na etapa 2)Combine as linhas RestCTR (das etapas 2 e 4) em uma única tabelaObter SOMA da Duração apontada pelas linhas na etapa 5, agrupadas por HoursCTR

Se houver funções definidas que reduzam esse processo, elas serão muito bem-vindas.

questionAnswers(3)

yourAnswerToTheQuestion