我的报告中包含一个包含布尔列的数据集。在表格页脚中,我想显示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()
得到了负面结果...... O.o
还找到了一种有效的方法,我将其作为答案发布。但我不会接受它作为答案,但是有人有更好的方法来做到这一点=)
答案 0 :(得分:9)
我可以告诉你为什么出了问题......
为了避免额外的IIF,你可以使用否定所有-1的总和
= -Sum(CInt(Fields!Transfered.Value)).ToString() + " / " + CountRows().ToString()
最后,任何一种解决方案都可以,而且两者都是同样的kludgy
答案 1 :(得分:1)
找出一种方法,尽管可能有一种更清晰,更合理的方式......
=Sum(IIF(Fields!Transfered.Value, 1, 0)).ToString() + " / " + CountRows().ToString()
答案 2 :(得分:1)
我今天遇到了这个,至少证实了我并不是唯一一个从SSRS中得到负值的负值的人。感谢。
我的解决方案是使用ABS作为绝对值。我更喜欢这样做,而不仅仅是否定表达,因为如果你不小心阅读表达,那么在视觉上更容易看到“ - ”可能会错过。
但它基本上完全相同
答案 3 :(得分:0)
这是一种指望分组值
的方法=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)
如果它具有True
和False
值,或者只有一个不同的false
值,则从计数中删除1。