我一直在使用SQL Server 2000中的集合,并为我的一个临时表(#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
...
我想要做的是计算每个HoursCTR的2个最长休息时间的总和,最好使用集合和临时表(而不是游标或嵌套子查询).
这是在SQL中无法运行的梦想查询(无论我运行多少次):
Select HoursCTR, SUM ( TOP 2 Duration ) as LongestBreaks
FROM #Periods
WHERE Rest = 1
Group By HoursCTR
Run Code Online (Sandbox Code Playgroud)
HoursCTR可以具有任意数量的休息期(包括无).
我目前的解决方案不是很优雅,基本上涉及以下步骤:
如果有任何设置功能可以减少这个过程,那么它们将非常受欢迎.