我有一個存儲過程,它爲每個ActivityUnitId
返回一組行。摘要SQL中的行
需要的是基於小時數的每個ActivityUnitId的前10行。我已成功地做到這一點,我的查詢看起來像
With Data AS
(SELECT
ProjectID,ActivityUnitID,Description,GroupID,
SUM(Hours) AS NoiseHours,
ROW_NUMBER() OVER(PARTITION BY ActivityUnitID ORDER BY SUM(Hours) DESC) as 'RowNum'
FROM
tbl_Sub
INNER JOIN
tbl_AnalysisData ON tbl_Sub.SubActivityID = tbl_AnalysisData.SubActivityID
INNER JOIN
tbl_Analysis ON tbl_AnalysisData.LookupID = tbl_Analysis.LookupID
INNER JOIN
tbl_ActivityUnit ON tbl_ActivityUnit.ActivityUnitID = tbl_Sub.ActivityUnitID
tbl_Suby.ProjectID = @ProjectID
AND
tbl_Sub.ActivityUnitID = ISNULL(@ActivityUnitID,tbl_Sub.ActivityUnitID)
GROUP BY
ActivityUnitID,ProjectID, Description,AUGroupID
) SELECT * from Data where RowNum<=10
的「ROWNUM」列中包含行號的每一行,它的值是基於以小時分配。所以前10行包含前10個小時的行。
現在我想要的是爲每個ActivityUnitID添加額外的總結行。這將包含所有行被刪除的小時數的總和,即 RowNum> 10
所以我最終得到的是每個ActivityUnitID的前10行和額外的行總結一下其他行的時間爲ActivityUnitID
例如可以說我有2周的cols
表ID Hours RowNum
1A 30 1
2B 20 2
3C 10 3
4D 5 4
5E 4 5
6F 3 6
我如何做這個選擇讓我得到行,其中ROWNUM < = 3和另一排與其他人的求和
ID Hours
1A 30
2B 20
3C 10
Oth 12
不要在沒有給出解釋的情況下排除這個問題。就有關的努力而言,我已經在這個問題上討論了一段時間,但沒能找到足夠接近的解決方案。只是不想粘貼我的代碼,只是爲了顯示我的努力,當我知道這是錯誤的。 –