SSRS: рассчитать% из «подсчитанных» вычисляемых полей

Очень новичок в SSRS, поэтому незнаком с синтаксисом - Использование построителя отчетов 2.0.

Я построил очень простую таблицу в построителе отчетов, чтобы отображать общее количество свободных мест, доступных для пациентов, и общее количество этих мест, которые были забронированы.

Я хотел бы добавить дополнительный столбец, чтобы показать % забронированных слотов (т. е. Доступные слоты / Забронированные слоты * 100%):

| Total Slots | Booked Slots | % Booked |
+-------------+--------------+----------+
|    2000     |     1250     |   62.5%  |
+-------------+--------------+----------+

Значения «Всего слотов» и «Забронированных слотов» основаны на одном и том же поле («Booked_Flag») из набора данных. Это поле содержит значение «Да/Нет».

Столбец «Всего слотов» имеет базовое выражение: =Count(Fields!Booked_Flag.Value)

Столбец «Забронированные слоты» имеет базовое выражение: =SUM(IIF(Fields!Booked_Flag.Value="Y",1,0))

Пожалуйста, кто-нибудь может описать наиболее подходящий способ расчета цифры «% забронировано»?

Я пробовал это: =SUM(IIF(Fields!Booked_Flag.Value="Y",1,0)) / SUM(Fields!Booked_Flag.Value), но он выдает следующую ошибку, которая, как я полагаю, означает, что я не могу выполнить вычисление поверх другого вычисления:

The expression used for the calculated field '=SUM(IIF(Fields!Booked_Flag.Value="Y",1,0)) / SUM(Fields!Booked_Flag.Value)' includes an aggregate function. Aggregate functions cannot be used in calculated field expressions.

Очень признателен за любое руководство.


person Jon295087    schedule 17.05.2017    source источник
comment
Вместо использования полей используйте фактическое значение текстового поля. ReportItems!Textbox1.value   -  person Snowlockk    schedule 17.05.2017
comment
Не могли бы вы изменить данные, чтобы они возвращали значение 0 или 1 вместо «Y»/«N»? Таким образом, вы можете просто суммировать.   -  person Ross Bush    schedule 17.05.2017
comment
Спасибо @Snowlockk - я попробовал, но в отчете выдается #Error - есть предложения, почему это может быть?   -  person Jon295087    schedule 17.05.2017
comment
Спасибо @RossBush - думаю, я мог бы попробовать привести значение в StoredProcedure, но мне очень хотелось посмотреть, можно ли обработать все вычисления на уровне отчета.   -  person Jon295087    schedule 17.05.2017
comment
Может быть ошибка деления на ноль. используйте следующий код Общедоступная общая функция SafeDivision (числитель в виде десятичного числа, знаменатель в виде десятичного числа) в виде десятичного числа Если знаменатель = 0,0 Возврат 0,0 End If Возврат числителя/знаменателя Конечная функция   -  person Snowlockk    schedule 17.05.2017


Ответы (1)


Вы можете напрямую получить доступ к содержимому ячеек отчета и произвести расчеты с их помощью. В вашем случае все просто. Предположим, что в дизайне отчета ячейка, содержащая «2000», называется TextBox1 (проверьте свойства, чтобы получить имя), а ячейка, содержащая «1250», называется TextBox2, тогда выражение столбца% будет выглядеть примерно так:

=ReportItems!TextBox2.Value / ReportItems!TextBox1.Value

Просто установите формат вычисляемого столбца на p1 (проценты с 1 десятичным знаком), и все готово.

person Alan Schofield    schedule 17.05.2017
comment
@Alan_Schofield - большое спасибо, однако я получаю #Error в ячейке таблицы, когда запускаю отчет - person Jon295087; 17.05.2017
comment
Вы убедились, что имена текстовых полей верны? Я только что проверил это на случай, если я сделал что-то глупое, но он отлично работает. Если у вас все еще есть проблемы, опубликуйте изображение дизайна отчета и точное выражение, которое вы использовали. - person Alan Schofield; 17.05.2017
comment
@Alan_Schofield взломал, спасибо. Я по ошибке использовал имена ячеек заголовков столбцов в выражении вместо имен ячеек, содержащих фактическое значение - изменил их и бинго. Большое спасибо за вашу помощь. - person Jon295087; 17.05.2017