SSRS textrun использует первый агрегат во внешнем агрегате (разные наборы данных) - PullRequest
0 голосов
/ 24 июня 2019

Хорошо, я работаю над отчетом с несколькими данными, который объединяет данные многих серверов.
dataset1 = Один из шести наборов данных с нужными мне данными.

ds_BusinessDays = Набор данных таблицы календаря с определенными датами и числами, которые меняются каждый день / неделя / месяц.

Я пытаюсь использовать ПЕРЕКЛЮЧАТЕЛЬ, где MonthName (Date) из dataset1 = MonthName (Date2) из ​​ds_BusinessDays.Затем суммируйте общее количество.

Я успешно использовал аналогичные вычисления для нескольких наборов данных, такие как SUM (SWITCH, когда Data = "Product", затем 1) / SUM (businessdaysinmonth, "ds_BusinessDays"). Это было для получения среднего значения.работает как шарм.

=SUM(
    SWITCH(Fields!Requested_Month.Value = MonthName(Month(First(Fields!PreviousBusinessDate.Value, "ds_BusinessDays")))
    ,1)
)

Все поля в наборе данных ds_BusinessDays являются результатами 1 записи.Пример: «PreviousBusinessDay» = «21.06.2009».Поэтому я хочу, чтобы мой код делал что-то подобное.Если в поле MonthName (Date) dataset1 = MonthName (PreviousBusinessDate) из ds_BusinessDays затем введите 1. Суммируйте все это, чтобы получить общую сумму за этот месяц.Проблема в том, что FIRST и SUM являются единственными полями, доступными мне при использовании полей из другого набора данных.Они не могут быть использованы в Агрегате внутри Агрегата.

Есть ли замена, которую я могу использовать для первого в первом (поля! PreviousBusinessDate.Value, "ds_BusinessDays")?

1 Ответ

0 голосов
/ 24 июня 2019

Почему вы используете SWITCH, когда у вас есть только одно условие? Я думаю, что IIF будет намного легче читать. Кроме того, если ds_BusinessDays.PreviousBusinessDate является одной записью, зачем вам даже FIRST? Там должен быть только один результат. Если вы пытаетесь сделать то, что я думаю, вы пытаетесь сделать, это выражение должно сделать это.

= SUM(IIF(Fields!Requested_Month.Value = MonthName(Month(Fields!PreviousBusinessDate.Value, "ds_BusinessDays")), 1, 0))

Чтобы добавить дополнительные детали, SWITCH лучше всего использовать для более чем 2 условных операторов. Если вы пытаетесь сравнить только два поля, вы можете просто использовать простой IIF. Пример, когда необходимо SWITCH:

 =SUM(SWITCH(Fields!Date.Value = Fields!Today.Value, 1,
             Fields!Date.Value = Fields!Yesterday.Value, 2,
             Fields!Date.Value = Fields!Tomorrow.Value, 3,
             true, 0))

Это выражение будет проверять Date по трем различным полям и возвращать разные значения для каждого, заканчивая всегда истинным условием, которое перехватывает все остальное. Ваше выражение не нуждается в SWITCH.

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