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

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

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

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

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

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

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

Fields!kWp.Value 

с участием

1 * Fields!kWp.Value

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

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


person Daniel Neal    schedule 14.06.2012    source источник
comment
У вас есть какие-либо десятичные значения, хранящиеся в столбце кВт?   -  person praveen    schedule 14.06.2012
comment
Да, это все десятичные значения, примерно в диапазоне от 0 до 100.   -  person Daniel Neal    schedule 14.06.2012
comment
Затем вам нужно преобразовать значения в int SUM(iif(Fields!ProjectTypeID.Value = 2,CINT(Fields!FieldkWp.Value),0)   -  person praveen    schedule 14.06.2012
comment
Однако не отбросит ли это дробную часть? Это важно, и я не хочу округлять все 3,4 до 3 и т. д.   -  person Daniel Neal    schedule 14.06.2012
comment
Поэтому лучше преобразовать все в десятичную СУММУ(iif(Fields!ProjectTypeID.Value = 2,cdbl(Fields!FieldkWp.Value),0.00)   -  person praveen    schedule 14.06.2012
comment
Большое спасибо! Можете ли вы превратить это в ответ, чтобы я мог пометить его как ответ?   -  person Daniel Neal    schedule 14.06.2012
comment
я обновил свой ответ   -  person praveen    schedule 14.06.2012


Ответы (4)


Тип данных столбца «kWp» — десятичный, поэтому вам нужно либо преобразовать значение по умолчанию в 0,00, либо привести столбец к двойному значению.

 SUM(iif(Fields!ProjectTypeID.Value = 2,cdbl(Fields!kWp.Value),0.00))
person praveen    schedule 14.06.2012

Чтобы получить sum от kWp всех проектов типа 2, используйте следующее выражение:

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

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

person Venaikat    schedule 14.06.2012
comment
Спасибо за Ваш ответ. Вы уверены, что это будет суммировать только те значения, для которых это верно? Написанное таким образом, похоже, что если будет выполнено сначала, а затем вернет сумму всех полей. - person Daniel Neal; 14.06.2012
comment
Я попробовал, и результат был таким же, как =SUM(Fields!kWp.Value) - person HEDMON; 16.08.2019

У меня была аналогичная проблема, это сработало для меня:

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

zb

person Zalek Bloom    schedule 14.05.2018

Чтобы получить условную сумму, вы можете попробовать это выражение

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

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

person Ghayour Khan    schedule 29.04.2017