#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
и отфильтровать группу для aCOUNT > 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:
Если вы хотите, чтобы результат был примерно таким, как показано ниже.
Шаги:
- Создайте группу по идентификатору пользователя
Right Click on Group > Add Total > Before
- Добавьте столбец и поместите
=Count(Fields!PersonID.Value)
- Если вы хотите отображать только лиц, имеющих более одного, задайте свойство видимости строки табликса.
Комментарии:
1. Нет, я хочу, чтобы результаты представляли собой одно поле с надписью «1»
2. Разве вы не можете обработать это на уровне запроса набора данных, чтобы вернуть 1? Какой запрос (SQL) вы используете в своем наборе данных?