Агрегирование происходит неявно в пределах текущего уровня. Обычно =SUM(Fields!Amount.Value)
- это все, что требуется, и Reporting Services автоматически обрабатывает агрегацию.
Если у вас есть следующая группировка, вот как агрегация работает неявно, если вы просто использовать =SUM(Fields!Amount.Value)
:
Year Month Product Aggregation
2013 Sums all products for all months for 2013
January Sums all products for January 2013
Widget Sums all Widgets for January 2013
Gadget Sums all Gadgets for January 2013
February Sums all products for February 2013
Widget Sums all Widgets for February 2013
Gadget Sums all Gadgets for February 2013
2014 Sums all products for all months for 2014
January Sums all products for January 2014
Widget Sums all Widgets for January 2014
Gadget Sums all Gadgets for January 2014
February Sums all products for February 2014
Widget Sums all Widgets for February 2014
Gadget Sums all Gadgets for February 2014
В вашем случае неявная агрегация должна работать независимо от количества вложенности - Reporting Services будет работать все это для вас. Таким образом, это выражение должно работать на каждом уровне группировки:
=Sum(Fields!Success.Value)/Sum(Fields!Attempts.Value)
SUM
будет осуществляться в рамках текущего уровня группировки неявно. Если этого не происходит, вероятно, ваша группа работает неправильно. Посмотрите на свойства группы и посмотрите, что на самом деле группирует этот уровень группировки; внешняя группа должна быть Год, следующая группа Месяц и окончательный сокровенный продукт Группы.
Это не объединяет все январь вместе, это означает, что при изменении этого поля он должен печатать нижний колонтитул группы для предыдущей группы и заголовок группы для следующей группы. В 2013 году, когда январь изменится до февраля, он вызывает групповое изменение и аналогичным образом, когда январские изменения к февралю в 2014 году. Разные январцы в рамках более высокого уровня группировки Года.
Вам необходимо убедиться, что ваши данные в порядке, необходимом для группировки, либо с помощью ORDER BY [Year], [Month], [Product]
в вашем SQL-заявлении, либо путем реализации сортировки на вашем табло. В противном случае поля не будут в правильном порядке, и изменения группы будут запускаться постоянно, так как поля находятся в случайных порядках.
Вам нужно только определить область действия явно, если вы агрегируете вне текущей области. Например, если я хочу добавить процент, который каждая строка относится к общему набору данных, тогда мне нужно явно использовать набор данных в качестве моей области для агрегирования, поэтому я бы использовал этот расчет в моей подробной строке:
=SUM(Fields!Amount.Value)/SUM(Fields!Amount.Value, "MyDataset")
Обратите внимание, что recursive parameter используется только для таблиц с иерархическими данными, то есть отношений между родителями и дочерними элементами, таких как организационная структура сотрудников.
Является ли 'Период' именем вашего набора данных? Можете ли вы добавить несколько строк выборочных данных и желаемых результатов? Что произойдет, если вы используете 'Sum (success.value)/Sum (trys.value)' или 'Sum (success.value," GroupName ")/Sum (trys.value," GroupName ")'. Первый просто запускается во всех областях видимости, например.разные группы, а вторая выполняется явно в группе Scope. –
Если вы используете Sum (success.value)/Sum (значение trys.value), оно отображает то же значение для сводки группы, что и для последней строки подробностей. Если месяцы являются подгруппой года, заменил бы я «GroupName» на «Months»? ЕСЛИ так, разве это не запутается между январем 2013 года и январем 2014 года? Или вам нужно как-то сказать «Месяцы» в течение «Годов»? – user2708232