2017-02-21 11 views
1

Используя следующее заявление для расчета процентных многостраничной категории дохода, на основе определенного значения поля (Fields!CSU.Value="CEG")Использования Sum (IIF()) с несколькими наборами данных

=sum(iif(Fields!CSU.Value="CEG",cdbl(Sum(Fields!Multi_Cat__Rev.Value)/Sum(Fields!Est_Revenue_000_s.Value)/1000),0))

Это прекрасно работает в текущем наборе данных что я использую. Я также пытаюсь вычислить разницу между двумя наборами данных (одно и то же уравнение), но когда я укажу второй набор данных в функции, я получаю вложенную суммарную ошибку (см. Ниже)

Выражение, используемое для вычисленного поля =Lookup(Fields!Opp__.Value,Fields!Opp__.Value,sum(iif(Fields!CSU.Value="CEG",cdbl(Sum(Fields!Multi_Cat__Rev.Value)/Sum(Fields!Est_Revenue_000_s.Value)/1000),0),"dsPriorWeek"))' включает в себя совокупность, RowNumber, RunningValue, предыдущую или поисковую функцию. Aggregate, RowNumber.

Я просмотрел и не могу найти ответ на мой вопрос, пожалуйста, помогите ...

Вот текущий путь я пытаюсь сделать это: =sum(iif(Fields!CSU.Value="CEG",cdbl(Sum(Fields!Multi_Cat__Rev.Value)/Sum(Fields!Est_Revenue_000_s.Value)/1000),0))-sum(iif(Fields!CSU.Value="CEG",cdbl(Sum(Fields!Multi_Cat__Rev.Value)/Sum(Fields!Est_Revenue_000_s.Value)/1000),0),"dsPriorWeek")

ответ

0

Во-первых, вы будете необходимо разместить это выражение в текстовом поле в отчете, а не в вычисленном поле в наборе данных.

Во-вторых, вам нужно будет выполнить агрегатные функции вне функции Lookup. Поиск вернет нужный столбец, затем вы его заполните.

РЕДАКТИРОВАТЬ: Агрегаты для гнезд обычно не имеют смысла в SSRS. Кроме того, если вы идете по пути определения области действия в функции Sum, вы можете указать только одну группу. Таким образом, вы быстро столкнетесь с проблемами, если вы группируете несколько элементов в своей таблице.

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

+0

К сожалению, это ошибка: выражение Value для текстового поля «Textbox13» имеет внутреннюю совокупность во внешнем агрегате, который определяет область набора данных. Агрегат, который задает область набора данных, не может содержать другие агрегаты. – John

+0

Используя эту формулу: = sum (iif (Fields! CSU.Value = "CEG", cdbl (Sums! Multi_Cat__Rev.Value)/Сумма (поля! Est_Revenue_000_s.Value)/1000), 0)) - sum (iif (Fields! CSU.Value = "КЭГ", CDbl (Sum (Fields! Multi_Cat__Rev.Value)/Sum (Fields! Est_Revenue_000_s.Value)/1000), 0), "dsPriorWeek") – John