Как выбрать последний год в наборе данных?

У меня есть набор данных с данными за 3 года, и мне нужен только последний год в наборе данных для табликса, в данном случае 2019.

В этом случае я хочу подсчитать, сколько инцидентов произошло по классам только за 2019 год.

Набор данных:

введите здесь описание изображения

Желаемый результат:

введите здесь описание изображения

  • Является ли подсчет IncidentID (они уникальны) лучшим способом подвести итог?
  • Какими способами я могу добиться желаемого результата в SSRS?

Я не уверен, должен ли я фильтровать свойства группы и пытаться сделать максимальную дату или использовать какую-то другую функцию. Каждый год к набору данных будет добавляться новый год, годы не жестко запрограммированы.

Спасибо.


person JM1    schedule 01.10.2018    source источник
comment
Я полагаю, вы могли бы настроить дополнительный набор данных с максимальным годом и использовать его в качестве источника параметра, который вы могли бы использовать для фильтрации вашего отчета?   -  person JonTout    schedule 01.10.2018
comment
Спасибо @JonTout. Для некоторых элементов отчета требуется несколько лет, а для других требуется только один год. Конкретный набор данных, который я использую, содержит данные за три года, но я хочу, чтобы он показывал только самый последний год. Возможно ли это с помощью SSRS? Я думал, что Max{schoolyear] может сработать, но когда я пробую это выражение, у меня не остается никаких данных.   -  person JM1    schedule 01.10.2018
comment
В этом отчете несколько таблиц и только один набор данных? Если у вас есть несколько таблиц, вы можете фильтровать по статическому значению, я не думаю, что вы можете использовать агрегат в качестве фильтра таблицы.   -  person JonTout    schedule 01.10.2018
comment
Этот отчет содержит несколько таблиц и несколько наборов данных. Я думаю, что это нужно отфильтровать на столе, но я пока не смог заставить его работать. Спасибо за вашу помощь.   -  person JM1    schedule 01.10.2018


Ответы (3)


Вы можете использовать такое выражение, чтобы получить условное количество:

=Count(IIf(Fields!SchoolYear.Value = Max(Fields!SchoolYear.Value, "GradeRowGroup"), 1, Nothing))

Это проверит максимальный год в каждой группе. Вы можете использовать группу строк или весь набор данных для области видимости в функции Max. Оператор IIf возвращает 1 для строк, в которых учебный год соответствует максимальному значению. Затем Count просто объединяет их.

person StevenWhite    schedule 01.10.2018
comment
Спасибо! Коллега разработал нечто очень похожее на данных гистограммы данных (перечисленных ниже). Спасибо за ваше объяснение и время, которое вы потратили, чтобы помочь! - person JM1; 02.10.2018

Я думаю, есть два практических способа:

Вы можете сделать Учебный год параметром. Если вы хотите (по умолчанию) открыть фактический год, вы можете перейти к параметру Учебный год щелкнуть правой кнопкой мыши > Свойства параметра > Значения по умолчанию > Указать значения. Должно быть что-то вроде этого:

[School Year].[Year].&[2018]

Измените приведенное выше выражение на следующее:

="[Учебный год].[Год].&[" & CStr(Год(Сейчас())) & "]"

Таким образом, ваш отчет открывается по умолчанию с фактическим учебным годом, и вы также можете выбрать другие учебные годы для информации. В табликс просто добавьте свои Count() и Sum() и все остальное, что вам нужно.

Или вы можете добавить фильтр в свой табликс (это более статично), например:

'Expression
=Fields!SchoolYear.Value = Year(Now()) 'Integer
=Fields!SchoolYear.Value = CStr(Year(Now())) 'String
'Type
Boolean
'Value
True
person Strawberryshrub    schedule 02.10.2018
comment
Спасибо! В этом отчете есть разные таблицы, и они используют несколько наборов данных, которые содержат данные за разные годы между ними, поэтому я не уверен, что идея параметра сработает в этом конкретном случае, спасибо, что нашли время, чтобы помочь мне! - person JM1; 02.10.2018

Сотрудник помог мне разобраться. Я использую панель данных, чтобы показать совокупность, и он сказал поместить выражение в данные диаграммы, и это сработало.

=Sum(IIF(MAX(Fields!SchoolYear.Value)=Fields!SchoolYear.Value,Fields!NumDays.Value,0))
person JM1    schedule 02.10.2018