2017-02-06 1 views
3

Я хочу, чтобы верхние 20 строк из отчета SSRS Matrix и остальные строки были объединены в 21 строку с именем строки, жестко закодированным как «Другие».Получение верхних 20 строк и остальных в 21-й строке в отчете матрицы SSRS

Я создал отчет матрицы SSRS с группировкой строк на основе «Category_Name» и группировки столбцов на основе «Creation_Time». Группа столбцов «Creation_Time» отформатирована для отображения даты в формате «M/yyyy». Я группирую «Id_Number» как Count (Id_Number) для каждой группы, и я хочу, чтобы 20 записей, отсортированных по счету (Id_Number), были наивысшими в порядке убывания или убывания.

Я поставил условие видимости, как показано на рисунке:

Я дал следующее выражение для строки «Другие»

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

Но это не сработало , Я получил сообщение об ошибке: «Запуск функций не может быть указан как вложенные агрегаты».

Я ранее пытался использовать фильтр TOP N для группировки строк SSRS на основе подсчета (Id_Number), который дает Top 20 строк. Но если мы добавим «групповое общее» в группировку строк, это даст общее количество всех строк а не только 20 верхних рядов. Логика, о которой я думал, заключалась в том, чтобы вычесть общее количество верхних 20 строк из общего числа всех строк. Но я не могу получить общее количество 20 строк.

Я использовал базовый запрос SQL с 2 параметрами, @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' и wrapping' select'. Можете ли вы опубликовать свой сценарий? – iamdave

ответ

0

Изменить Ваш SQL выберите сценарий включать в себя следующее: случай, когда ROW_NUMBER() OVER (ORDER BY SUM (ID_NUMBER) DESC)> 20, затем 'Top 20' еще 'другие' End AS 'Тип'

Затем в вашем отчете добавьте еще один отдельный tablix, который фильтруется «type» = «others»

Смежные вопросы