2011-11-07 145 views
-1

我总是得到0使用count我无法理解计数和总和总和和计数混乱

我试图让行的数量我的报告的具体情况之间的差异或总结

columnA columnB 
0  my string 
0  none 
0  my string 
0  none 
1  none 

= IIF((Fields!columnA.Value = "0" and Fields!columnB.Value = "none"), SUM(Fields!columnA .Value),0)

我想要得到2结果 我看不到我的错误

+0

对于列A = 1,IIF将是错误的。这意味着你有3个错误和2个真实条件。你所要求的输出意味着给出“3”的错误条件。不是“2”。并学会投票/接受答案。 – gbn

回答

1

SUM()将返回该字段中的值的总数,而count将返回非空值的数量。

所以在你提供的例子中,=SUM(Fields!columnA.value)应该返回0,=COUNT(Fields!columnA.value)应该返回5. [但是你的IIF语句听起来像这是在范围是单行的位置,所以然后计数和总和会只适用于该行。如果你想余地整个组的表达,一个范围参数添加到您的聚合函数,如COUNT(Fields!columnA.value, "MyDataSetName")]

既然你没有看到这样的结果,有一些事情你可以检查:

  • 你真的回来0为您的查询,或者有可能 你得到一个空值回?
  • 您是否使用这个表达式 某个地方的范围与您的期望相符?也就是说,如果你 希望它计算你的数据集中的所有行,你是在顶级 级别的文本框或组合中使用它吗?

另外,简化调试:将您的IIF语句的各个组件放置在不同的单元格中,以便您可以验证这些值是否与您认为应该发生的情况相符。

+0

我很确定我没有从我的查询中获取空数据,我将其更改为当结果为NULL时返回数据。我没有使用组,我想在顶级文本组中使用结果。我在顶层也使用了countrows(),这是工作。 – user1004299

+0

我在我的textbox = IIF(Fields!CompletedBy.Value =“PDA”,Count(Fields!CompletedBy.Value),0)中使用了这个表达式,并且我得到了所有行的总数,我从countrows()获得。并且我想只获得包含“PDA”的行数CompletedBy – user1004299

+0

非常感谢,现在一切正常 – user1004299

0

您应该使用COUNT。列A的0 + 0的SUM将返回0。COUNT将返回匹配记录的数量。如果COUNT不起作用,那么您的分组(聚合)或匹配数据的过滤条件有问题。

+0

我使用count IIF((Fields!OrderCompletedOnPDA.Value =“0”和Fields!CompletedBy.Value =“NONE”),COUNT(Fields!OrderCompletedOnPDA.Value),0),我确定我是从我的sp获取这个数据集。我不能undelook如何在这种情况下不起作用 – user1004299

+0

现在我改变我的sp用于在iff中不使用复杂的expressino。现在我正在使用= IIF(Fields!CompletedBy.Value =“PDA”,Count(Fields!CompletedBy.Value),0),这给了我从countRows获得的行的总数..我无法理解为什么另一个不适合我! – user1004299

+0

它必须是导致问题的NULL数据或作用域。看看COUNT的SSRS规范http://technet.microsoft.com/en-us/library/ms157163(SQL.100).aspx – SliverNinja