2014-01-29 5 views
0

У меня есть таблица с Годом, Месяцем, Продуктом, количеством попыток и количеством успешных попыток.SSRS Сумма в вложенных группах

Данные группируются по году, затем по месяцу, а затем по продукту.

Мне нужно добавить% успеха (успешные/попытки) по продукту, а затем для группировки по месяцам, а затем по году.

Прежде чем у меня был год и месяц в одном поле. Поэтому я смог сделать это, используя Sum (success.value, «period»)/Sum (trys.value, «period»).

Но как это сделать, если есть вложенные группы?

Я видел кое-что о добавлении параметра «рекурсивный», но пока не получил его на работу.

+0

Является ли 'Период' именем вашего набора данных? Можете ли вы добавить несколько строк выборочных данных и желаемых результатов? Что произойдет, если вы используете 'Sum (success.value)/Sum (trys.value)' или 'Sum (success.value," GroupName ")/Sum (trys.value," GroupName ")'. Первый просто запускается во всех областях видимости, например.разные группы, а вторая выполняется явно в группе Scope. –

+0

Если вы используете Sum (success.value)/Sum (значение trys.value), оно отображает то же значение для сводки группы, что и для последней строки подробностей. Если месяцы являются подгруппой года, заменил бы я «GroupName» на «Months»? ЕСЛИ так, разве это не запутается между январем 2013 года и январем 2014 года? Или вам нужно как-то сказать «Месяцы» в течение «Годов»? – user2708232

ответ

0

Агрегирование происходит неявно в пределах текущего уровня. Обычно =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 используется только для таблиц с иерархическими данными, то есть отношений между родителями и дочерними элементами, таких как организационная структура сотрудников.

+0

Спасибо за ваш ответ Крис. Я проверю это и дам вам знать. – user2708232

Смежные вопросы