2014-10-23 2 views
3

Я знаю, что этот вопрос уже задавали много раз прежде, но последовав предыдущие решения я до сих пор не может решить эту проблему:Замена пустые значения нулями

У меня есть отчет SSRS (2008R2), который отображает данные в матрица. Существует горизонтальная группа столбцов, содержащая значения, которые могут или не могут существовать: когда значение не существует, я хотел бы заменить пустую ячейку 0. В настоящее время отчет предоставляет как:

enter image description here

, и я хотел бы эти пустые ячейки, чтобы иметь 0 «S в них вместо этого. Выражение клетки было установлено:

=Sum(Fields!number.Value) 

поэтому я попытался

=iif (IsNothing(Sum(Fields!number.Value)),0,Sum(Fields!number.Value)) 

и

=iif (IsNothing(Fields!number.Value),0,Sum(Fields!number.Value)) 

и

=iif (Sum(Fields!number.Value)>0,Sum(Fields!number.Value),0) 

... но "пустые" ячейки сохраняются. Я уверен, что я делаю что-то глупое ... но что?

EDIT: Для того, чтобы проиллюстрировать мою ситуацию лучше, мой запрос производит вывод (в SSMS) аналогична:

File | outcomeID  | number 
A | Outcome1 | 2 
A | Outcome2 | 1 
B | Outcome2 | 2 
C | Outcome1 | 1 
D | Outcome3 | 2 

... который произвел бы результат в SSRS из:

File | Outcome1 | Outcome2 | Outcome3 
A | 2  |  1  | 
B | 2  |   | 
C | 1  |   | 
D |   |   | 2 

с использованием колонки Группа:

enter image description here enter image description here

Даже если я изменить выражение, чтобы быть просто:

=999

Я заканчиваю с

File | Outcome1 | Outcome2 | Outcome3 
A | 999 |  999 | 
B | 999 |   | 
C | 999 |   | 
D |   |   | 999 

... то есть много пробелов.

EDIT2: Я загрузил очень маленький пример .rdl файл [УДАЛЕНО], используя данные примера выше - он воспроизводит этот вопрос

+0

Можете ли вы справиться с этим в запросе? –

+0

@TabAlleman: К сожалению, нет :( – KenD

+0

'= iif (IsNothing (Sum (Fields! Number.Value)), 0, Sum (Fields! Number.Value))' отлично работает для меня в простом тесте. Не могли бы вы добавить более подробную информацию о том, как мы можем реплицировать ошибку, например, данные образца, конкретную информацию о типах данных и т. д. –

ответ

7

моей первой мыслью было изменение хранимой процедуры, но поскольку у меня был аналогичный отчет, чтобы проверить что-то быстро, у меня появилась идея.

попробовать это вместо

=0+Sum(Fields!number.Value) 
1

Я предпочитаю использовать следующие (на SSRS 2005, однако): =CInt(Fields!number.Value). Можно использовать другие преобразования, например CDbl.

В качестве альтернативы, но немного дольше, попробуйте =IIf(Fields!number.Value Is Nothing, 0, Fields!number.Value).

+0

Я боюсь, что это не сработало для меня – KenD

+0

Вы попробовали это без Sum()? Почему вы все равно используете Sum()? –

+0

Да, 'Sum()' не отличается. 'Sum()' используется в горизонтальной группе столбцов для группировки нескольких значений вместе. – KenD

Смежные вопросы