Пытаясь использовать службы отчетности, я попытался включить расчет. Расчет, который я пытаюсь найти, представляет собой среднее значение разницы между датой начала и датой окончания каждой записи.
Я пробую этот фрагмент кода в SSRS:
=CInt(DateDiff(DateInterval.Day, CDate(First(Fields!StartDate.Value, "DataSet1")), CDate(First(Fields!EndDate.Value, "DataSet1")))) / COUNTDISTINCT(DataSet1.Fields!Forename.Value)
Но это выходит с ошибкой
The Value expression for the text box ‘Textbox31’ uses an aggregate expression without a scope. A scope is required for all aggregates used outside of a data region unless the report contains exactly one dataset.





В вашем sql select оператор ввода: DATEDIFF(d, StartDate, EndDate) КАК разница дней
затем в вашем дизайнере отчетов (добавьте итог в таблицу или в виде столбца в матрице) используйте это выражение
=Среднее(Поля!diff.Value)
Вам все равно нужно будет указать набор данных в выражении, поскольку OP, похоже, использует текстовое поле произвольной формы, а не в таблице. scope is required
Кажется, вы делаете это в текстовом поле, а не в таблице.
Поскольку текстовое поле не имеет собственного свойства набора данных, вам необходимо указать набор данных в своем выражении. У вас есть все, кроме COUNT.
=DateDiff(DateInterval.Day, CDate(First(Fields!StartDate.Value, "DataSet1")), CDate(First(Fields!EndDate.Value, "DataSet1"))) / COUNTDISTINCT(DataSet1.Fields!Forename.Value, "DataSet1")
Лучше делать это внутри самого запроса, а не в макете отчета.