Выполнение операции, подобной SUMIF, с помощью построителя отчетов SQL Server

Я пытаюсь создать условную сумму в построителе отчетов SQL Server 3.0.

Мое выражение выглядит так:

=Sum(Iif(Fields!ProjectTypeID.Value=2,Fields!kWp.Value,0))

Я надеялся, что это выражение даст сумму кВт / ч всех проектов типа 2.

К сожалению, это не так. И я не могу понять, почему. Он просто возвращает результат 0, хотя я знаю, что в столбце kWp есть ненулевые значения, и столбец не содержит нулей.

Коллеге удалось добиться положительного результата, заменив

Fields!kWp.Value 

с

1 * Fields!kWp.Value

Но мы понятия не имеем, почему это работает, и, следовательно, не можем действительно доверять ответу.

Как я могу заставить эту условную сумму вести себя самостоятельно?

 praveen14 июн. 2012 г., 12:09
Есть ли у вас десятичные значения, хранящиеся в столбце кВт?
 Daniel Neal14 июн. 2012 г., 12:10
Да, все десятичные значения - примерно в диапазоне от 0 до 100
 praveen14 июн. 2012 г., 12:40
Затем вам нужно привести значения в int SUM (iif (Fields! ProjectTypeID.Value = 2, CINT (Fields! FieldkWp.Value), 0)
 praveen14 июн. 2012 г., 12:56
Поэтому лучше конвертировать все в десятичную сумму (iif (Fields! ProjectTypeID.Value = 2, cdbl (Fields! FieldkWp.Value), 0,00)
 Daniel Neal14 июн. 2012 г., 12:52
Разве это не выбрасывает дробную часть, хотя? Это очень важно, и я не хочу округлять все 3,4 до 3 и т. Д.

Ответы на вопрос(4)

=sum(IIf(Fields!balance.Value > 0,(Fields!balance.Value),0))

Он суммирует только положительные числа, в противном случае он добавляет 0 к итогу, вы можете сделать это наоборот.

sum изkWp всех проектов типа2выражение выглядит следующим образом:

=IIf(Fields!ProjectTypeID.Value=2,sum(Fields!kWp.Value),0) 

Я надеюсь, что это поможет вам.

 Daniel Neal14 июн. 2012 г., 12:55
Спасибо за Ваш ответ. Вы уверены, что это будет только сумма значений, для которых это верно? Написанный таким образом, выглядит так, будто сначала будет выполнено условие if, а затем возвращена сумма всех полей.

=Sum(iif(Fields!date_break.Value = "0001-01-01",Fields!brkr_fee.Value, nothing))

ZB

Решение Вопроса

поэтому необходимо либо преобразовать значение по умолчанию в 0,00, либо привести столбец к двойному

 SUM(iif(Fields!ProjectTypeID.Value = 2,cdbl(Fields!kWp.Value),0.00))

Ваш ответ на вопрос