как группировать и фильтровать по совокупности в SSRS

#reporting-services #group-by #filtering #aggregate #ssrs-2012

#службы отчетов #группировать по #фильтрация #aggregate #ssrs-2012

Вопрос:

У меня есть требование сообщать о количестве людей, у которых более одной записи в наборе данных для моего отчета SSRS, и я не совсем понимаю, как фильтровать по группировке.

Итак, если результаты набора данных:

 ID     PersonID    FileID
1      1234         abc
2      7890         ade
3      5647         aer
4      1234         xyz
  

Я хотел бы сообщить 1. Есть один человек, у которого более 1 записи.

Есть ли выражение или что-то, что я могу использовать для этого?

Спасибо.

Комментарии:

1. Нужно ли фильтровать отчеты только для лиц с несколькими записями? или вам нужно рассчитать количество пользователей с более чем одной записью?

2. Мне нужно включить в отчет в качестве вычисления количество пользователей с более чем 1 записью.

3. Какой результат вы хотите отобразить в своем отчете?

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

5. Вы не можете фильтровать агрегат по таблице , но вы можете фильтровать группу по агрегату. Я думаю, было бы лучше сгруппировать по вашему Person ID и отфильтровать группу для a COUNT > 1 . Если вам нужно показать все, тогда не фильтруйте и используйте COUNT.

Ответ №1:

Для получения требуемого количества можно использовать функции LookupSet и countDistinct, однако вам потребуется текстовое поле, используемое для отображения вычисления в области видимости.

Если вы хотите показать общее количество пользователей с более чем одной записью в вашей таблице, используйте это выражение:

 =CountDistinct(
IIF(
  LookupSet(
    Fields!PersonID.Value,Fields!PersonID.Value,
    Fields!ID.Value,"DataSetName"
  ).Length>1,Fields!PersonID.Value,Nothing)
)
  

Установите его вне любой области действия группы:

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

Однако, если вы хотите отобразить количество пользователей с более чем одной записью за пределами вашего табликса в текстовом поле, вы можете добавить дополнительный табликс и удалить необходимые строки и столбцы, чтобы оставить только одно текстовое поле, затем установите для свойства dataset значение dataset name, которое вы используете, и используйте то же выражение.

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

Это должно привести к:

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

Обратите внимание, что в моем наборе данных больше строк для иллюстрации функциональности. В правой части есть только одно текстовое поле с подсчетом.

Дайте мне знать, если это поможет.

Комментарии:

1. Именно то, что мне было нужно! Я использовал табликс с одной ячейкой, и он отлично работает! Спасибо!

Ответ №2:

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

Шаги:

  1. Создайте группу по идентификатору пользователя
  2. Right Click on Group > Add Total > Before
  3. Добавьте столбец и поместите =Count(Fields!PersonID.Value)
  4. Если вы хотите отображать только лиц, имеющих более одного, задайте свойство видимости строки табликса.

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

Комментарии:

1. Нет, я хочу, чтобы результаты представляли собой одно поле с надписью «1»

2. Разве вы не можете обработать это на уровне запроса набора данных, чтобы вернуть 1? Какой запрос (SQL) вы используете в своем наборе данных?