SSRS Расчет итогов

В SSRS у меня есть отчет, созданный из хранимой процедуры. У меня есть один столбец с названием «Цена», и в отчете есть несколько группировок (показано ниже). Итак, поскольку существует так много группировок, существует много общих цен. Мне нужно свернуть эти итоги в родительскую группу TimeRange как среднее. Это сделано для того, чтобы я мог знать, что средняя цена продукта Z была X. Я, очевидно, знаю, что это делается путем сложения всех этих итогов и деления на сумму итогов, но я не знаю, как это можно сделать в SSRS. Можно ли динамически сложить все эти итоги? Или, может быть, установить какие-то глобальные переменные, чтобы справиться с этим?

РЕДАКТИРОВАТЬ: Я неправильно описал проблему. Кажется, основная проблема заключается в том, что данные о ценах возвращают все положительные «цены», тогда в отчете используются другие столбцы, чтобы определить, отрицательная цена или нет (если мы что-то купили или что-то продали). Поскольку я не думал, что есть способ компенсировать это с помощью кода Microsoft. Я сгруппировал их вместе на основе правил и умножил отрицательные цены на -1. Теперь я хочу придумать способ взять эти отдельные итоги и объединить их в один промежуточный итог. Это можно сделать, взяв сумму итогов. Простое выполнение прямого Sum (Price) не помогает, потому что это просто получит все значения непосредственно из запроса, прежде чем отчет коснется их, и все эти значения будут положительными, что отбрасывает данные отчета.

Итак, я предполагаю, что здесь есть три решения:

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

2.Есть какой-то способ определить и назначить глобальные переменные в отчете, тогда я мог бы использовать какой-то псевдо-код для добавления и вычитания данных из переменной, а затем взять среднее значение от общей суммы.

3. В настоящее время это невозможно, и мне придется полностью переписать процесс исходных данных или предложить другое решение, отличное от SSRS.

   TimeRange 
 _
| Product
|   _
|  |
|  | Time Unit
|  |  _
|  | |
|  | | TransactionType
|  | |  _
|  | | |
|  | | | Pay Status
|  | | |   Price Total Calculated Here  [Sum(Price)]
|  | | |_
|  | |
|  | |_
|  |
|  |_
|   
|
|
|_

person Mickey Sly    schedule 14.04.2014    source источник


Ответы (2)


Службы Reporting Services делают это очень просто - на самом деле, если бы вы просто использовали мастер (мастер таблиц в построителе отчетов, мастер отчетов в Visual Studio / BIDS) и добавили все поля группировки в раздел «группы», а затем Включите промежуточные итоги, суммирование будет выполнено за вас, и вы сможете затем изменить поле, используя выражение для разделения двух суммированных полей.

Вот ссылка на дополнительную полезную информацию о группировке и агрегировании: http://technet.microsoft.com/en-us/library/ms170712.aspx

person kyzen    schedule 14.04.2014
comment
Спасибо за ответ, и обычно это решает проблему, но, пройдя через это, я все равно оказался там, где нахожусь сейчас. Я объяснил это более подробно в моем редактировании моего вопроса, надеюсь, что вы можете помочь :) - person Mickey Sly; 15.04.2014
comment
Не могли бы вы добавить вычисляемое поле в набор данных (в идеале на уровне запроса, хотя, если вы не можете этого сделать, вы можете добавить вычисленное поле в наборе данных SSRS), которое последовательно вычисляет правильную цену или количество; а затем суммируйте или среднее значение по мере необходимости? - person kyzen; 15.04.2014
comment
Спасибо, я даже не знал, что вычисляемые поля существуют. Это решило мою проблему. - person Mickey Sly; 15.04.2014

Используйте функцию Avg, чтобы получить среднее значение всех значений в вашей группе:

=Avg(Fields!Price.Value)
person Ron Smith    schedule 14.04.2014