2017-02-06 33 views
3

我想要SSRS矩陣報告的前20行,其餘行應在第21行中彙總,行編號爲「Others」。在SSRS矩陣報告中獲取排名前20的行,其餘排在第21行

我已經創建了基於「Category_Name」的行分組和基於「Creation_Time」的列分組的SSRS矩陣報表。列組「Creation_Time」被格式化爲以「M/yyyy」格式顯示日期。我爲每個分組彙總「Id_Number」作爲計數(Id_Number),並且我想按排名(Id_Number)排序的前20條記錄按照最高順序排序或按降序排列。

我已經設置了能見度條件爲顯示圖像中:

我已經給下面的表達式爲行「其他」

=count(iif(RunningValue(Fields!Category_Name.Value,countdistinct,nothing)>20,Fields!Id_Number.Value,0) 

但它沒有工作。我得到錯誤說「運行函數不能被指定爲嵌套聚合」。

我以前曾嘗試在SSRS行分組上使用TOP N過濾器,它基於count(Id_Number)給出Top 20 rows.But如果我們將「group total」添加到行分組,它會給出所有行的總數而不僅僅是前20排。我想到的邏輯是從所有行的總數中減去前20行的總數。但我無法獲得前20排的總數。

我使用基本的SQL查詢有兩個參數,@Begin和@End:

SELECT Category_Name, Id_Number, Creation_Date 
FROM Tbl 
WHERE Creation_Date BETWEEN @Begin AND @End 

本報告所需的輸出是這樣的:

我得到的一切,每除最後一行「其他」之外的所需輸出。

+0

您是否從SQL查詢中獲取數據? – iamdave

+0

是的,從mssql查詢中獲取數據。 –

+4

你會想在你的SQL而不是你的報告中使用'row_number'和一個換行'select'來處理這個問題。你能發佈你的腳本嗎? – iamdave

回答

0

修改你的SQL SELECT腳本包括以下內容: CASE WHEN ROW_NUMBER()OVER(ORDER BY SUM(ID_NUMBER)DESC)> 20,然後 '前20' 其他 '其他' 結束,因爲 '類型'

然後在您的報告中添加另一個單獨的tablix,並按「type」=「others」過濾