Кастинг SSRS замедляет работу отчета

Я видел несколько сообщений о сумме, если ошибка, но я не мог найти ничего подобного. Я работаю над отчетом, в котором есть около 9 текстовых полей с выражениями, перечисленными ниже (изменено немного на текстовое поле).

Пример 1 - это дает #Error при отображении отчета

=SUM(IIF(Fields!RATING.value >= 6, (Fields!NetBal.Value), 0))

Пример 2 - это делает рендеринг отчета чрезвычайно медленным (даже если я удалю все текстовые поля, кроме одного, с помощью этого выражения, это займет вечность)

=Sum(IIF(FIELDS!RATING.Value >= 6, CDBL(Fields!NetBal.Value), CDBL(0)))

person user2084896    schedule 31.12.2014    source источник
comment
Извините, что так поздно отвечаю, в NetBal нет Null, но в поле Rating есть Null. Это самая странная вещь, и я спрашивал на нескольких досках безрезультатно.   -  person user2084896    schedule 08.01.2015
comment
Вы пробовали это: = SUM (IIF (Fields! RATING.value › = 6, (Fields! NetBal.Value), 0,0))   -  person Tab Alleman    schedule 08.01.2015
comment
Да, он превращает все мои значения True в #Error, кроме тех, которые не соответствуют критериям.   -  person user2084896    schedule 08.01.2015
comment
Исправления: Да, он превращает все мои значения True в #Error.   -  person user2084896    schedule 08.01.2015
comment
Я получаю только одно предупреждение: [rsAggregateOfMixedDataTypes] Выражение Value для textrun «Textbox44.Paragraphs[0].TextRuns[0]» использует агрегатную функцию для данных различных типов данных. Агрегирующие функции, отличные от First, Last, Previous, Count и CountDistinct, могут агрегировать данные только одного типа.   -  person user2084896    schedule 08.01.2015
comment
Каков тип данных NetBal? Попробуйте указать 0 как тот же тип данных.   -  person Tab Alleman    schedule 08.01.2015
comment
NetBal является числовым (17,2) без нулевых значений.   -  person user2084896    schedule 08.01.2015
comment
Предполагая, что Textbox44 - это тот, у которого #Error, в сообщении говорится, что вы должны сделать так, чтобы внутри функции SUM() мог быть возвращен только один возможный тип данных. Что, если вы попробуете это: =SUM(Cdbl(IIF(Fields!RATING.value ›= 6, (Fields!NetBal.Value), 0))) Хотя, честно говоря, я удивлен, что изменение 0 на 0,0 не исправляет это . Сообщение об ошибке меняется, когда вы пытаетесь это сделать?   -  person Tab Alleman    schedule 08.01.2015
comment
Сообщение об ошибке не меняется. Я пытался понять, почему тип данных будет другим (как следует из предупреждения), если только он не смотрит на 0,00, который может быть у NetBal при попытке суммировать его. Сейчас попробую ваше предложение.   -  person user2084896    schedule 09.01.2015
comment
Хорошо, я попробовал это, я получил правильные значения, но рендеринг занимает буквально около 7 минут. Всего около 18 тысяч записей, я не знаю, что с этим делать. Я даже спросил администратора баз данных, мы оба были в тупике.   -  person user2084896    schedule 09.01.2015
comment
Не знаю, почему это так медленно, но можете ли вы переместить эту логику в свою хранимую процедуру, чтобы вы могли просто сопоставить текстовое поле с простым значением? Может быть быстрее.   -  person Tab Alleman    schedule 09.01.2015
comment
Я попробую это. Спасибо за помощь!   -  person user2084896    schedule 09.01.2015


Ответы (1)


Может это просто опечатка? В вашей первой формуле первое «значение» написано строчными буквами, где, вероятно, должно быть «Значение».

=SUM(IIF(Fields!RATING.value >= 6, (Fields!NetBal.Value), 0))

Надеюсь это поможет

person DoubleJ    schedule 01.01.2015
comment
Хорошо, позвольте мне попробовать это. Я дам тебе знать! Спасибо! - person user2084896; 02.01.2015