2012-02-15 2 views
0

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

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

То, что я хотел бы сделать, это подсчет количества элементов в этих группах с помощью codeId. Я планирую использовать счет как часть конкатенированной строки, которая составляет весь заголовок группы. В основном это говорит «Код тревоги # {codeId} - {Описание} - Всего: {Всего}".

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

Так что я надеялся, что могу использовать групповую переменную для подсчета количества элементов, содержащихся в группе. Может ли кто-нибудь сказать мне приблизительные шаги, чтобы попытаться снять это?

ответ

2

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

Поскольку у вас уже есть группа в SSRS, вы можете использовать функцию CountRows. Поместите это выражение в заполнитель, например:

="Alarm Code #" & Fields!CodeID.Value 
& " - " & First(Fields!Description) 
& " - Total: " & CountRows() 

Или, в зависимости от размера, вы можете добавить связанный подзапрос в ваш запрос:

SELECT 
    CodeID, 
    MyField, 
    MyOtherField, 
    (SELECT COUNT(*) FROM myTable t1 WHERE t1.CodeID = t2.CodeID) AS MyRowCount 
FROM 
    myTable t2 

Это не особенно эффективным SQL, так что если вы используете это на сотнях тысяч строк или более, я бы пошел с первым подходом.

+0

Ах, человек не может поверить, что все было так просто :). Я использую countrows, чтобы проверить свою таблицу и скрыть ее, если countrows <1 и вместо этого отобразить метку данных. Как-то я забыл об этом, когда делаю этот отчет. Благодаря Jamie F! – TWood

+0

Да, совокупные функции в SSRS довольно умны: они автоматически изменят свою область на текущую группировку, поэтому обычно они будут делать то, что вы хотите, без указания области. Но вы всегда можете добавить имя группировки: 'CountRows (« MyGroupName »)', чтобы быть уверенным, что вы получите счет правильного уровня группировки. –