Подтвердить что ты не робот

Условное суммирование SSRS

У меня есть отчет SSRS, который отображает несколько строк строк. В каждой строке находится поле "ТИП". В этом поле TYPE имеется значение "M" для значения или "P" для значения. В конце отчета я хочу суммировать все значения цены для "P" TYPES. Я попробовал это, но это вызвало #Error:

=Sum(iif(Fields!TYPE.Value = "P",Fields!EXT_QTY.Value * Fields!PRICE.Value ,0))

это суммировало все строки

=iif(Fields!PART_TYPE.Value = "P" ,  Sum(Fields!EXT_QTY.Value * Fields!PRICE.Value ),  0 )

Я уверен, что это невозможно. Есть идеи? Благодаря

4b9b3361

Ответ 1

Нашел ответ....

=SUM(IIF(Fields!PART_TYPE.Value ="P",CDbl(Fields!EXT_QTY.Value * Fields!PRICE.Value), CDbl(0.0)))

Ответ 2

Ошибка SUM из-за сравнения типов - вы не можете суммировать значения разных типов, являясь выражением (возможно, Double) с 0, a Integer. Ответ MikeTWebb делает явное преобразование типов, чтобы обойти эту ошибку. Это отлично подходит для этого конкретного примера, являющегося суммой, однако это не дает точного результата, если вы хотите, чтобы среднее значение (будучи Sum / Count) значений, где Тип является P. Это потому, что 0 является значением и будет быть включенным в вычисление усреднения, когда вы действительно хотите, чтобы эти значения были исключены из расчета.

Другой вариант - использовать Nothing вместо 0:

=Sum(IIF(Fields!TYPE.Value = "P", Fields!EXT_QTY.Value * Fields!PRICE.Value, Nothing))

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