SSRS: как считать истинные строки - PullRequest
6 голосов
/ 18 мая 2009

У меня есть отчет с набором данных, в котором есть столбец с логическими значениями. В нижнем колонтитуле таблицы я хочу отобразить x / y, где x - это количество строк, которые были true, а y - сколько строк было всего.

В настоящее время у меня есть это:

=Count(Fields!Transfered.Value).ToString() + " / " + CountRows().ToString()

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

=Sum(Fields!Transfered.Value).ToString() + " / " + CountRows().ToString()

Но это порождает ошибку, которую, я думаю, я могу понять. Я подумал, что если я преобразую логические значения в числа, где true равно 1, а false равно 0, то это может сработать. Но как я могу это сделать? Или это умный способ сделать все это вместе?

Обновление: Сейчас тоже попробовал

=Sum(CInt(Fields!Transfered.Value)).ToString() + " / " + CountRows().ToString()

И получил отрицательный результат ... О.

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

Ответы [ 4 ]

9 голосов
/ 18 мая 2009

Я могу сказать вам, почему все пошло не так ...

  • Количество (Fields! Transfered.Value) - это просто количество строк. иначе CountRows ()
  • Sum (Fields! Transfered.Value) пытается агрегировать "true" или "false" = ошибка
  • Sum (CInt (Fields! Transfered.Value)) будет суммировать -1 и 0, потому что VB.NET true = -1
  • Sum (IIF (Fields! Transfered.Value, 1, 0)) исправляет проблему знака = ваше решение

Чтобы избежать дополнительного ИИФ, вы можете использовать отрицание суммы всех -1 с

= -Sum(CInt(Fields!Transfered.Value)).ToString() + " / " + CountRows().ToString()

В конце концов, любое решение будет в порядке, и оба одинаково умны

1 голос
/ 14 апреля 2011

Я столкнулся с этим сегодня и, по крайней мере, убедился, что я был не единственным, кто получил отрицательное значение суммы для bools из SSRS. Спасибо.

Моим решением было использовать ABS для абсолютного значения. Мне это нравится больше, чем просто отрицание выражения исключительно потому, что визуально легче увидеть, где можно пропустить '-', если вы не будете осторожны при чтении выражения.

но по сути это одно и то же

1 голос
/ 18 мая 2009

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

=Sum(IIF(Fields!Transfered.Value, 1, 0)).ToString() + " / " + CountRows().ToString()
0 голосов
/ 20 июня 2014

Вот способ, которым вы рассчитываете на сгруппированное значение

=CountDistinct(IIF(Fields!TrueOrFalseField.Value, 
                   Fields!GroupedField.Value,
                   "BadValueToBeRemovedFromCount"))
              -IIF(CountDistinct(Fields!TrueOrFalseField.Value)=1 
                                 and First(Fields!TrueOrFalseField.Value)
                    , 0, 1)

Вторая часть

-IIF(CountDistinct(Fields!TrueOrFalseField.Value)=1 
                                     and First(Fields!TrueOrFalseField.Value)
                        , 0, 1)

удалить 1 из подсчета, если оно имеет значение True и False или если имеется только одно отдельное значение false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...