在SSRS中使用多个条件检索IIF表达式中的数据时出错

时间:2015-02-24 17:47:53

标签: reporting-services

我是SSRS的新手,我正在处理我正在创建的报告的问题。也许我只是不了解如何从DataSet中检索数据,但结果设置如下:

Count   ColA        ColB        ColC
1       Business    Start       Regular
4       Global      Middle      Regular
5       Online      Middle      Regular
8       Online      End         Regular
13      Online      Start       Regular

我的假设是我应该可以使用像这样的表达式

=iif(Fields!ColA.Value = "Online" AND Fields!ColB.Value = "Start" AND Fields!ColC.Value = "Regular", Fields!Count.Value, 0)

在文本框中,它应该返回13.而不是它返回零的错误条件。

您可以提供任何帮助,我们将不胜感激。我确信答案已经存在,但我对SSRS的了解有限可能会妨碍我的搜索标准技能。

3 个答案:

答案 0 :(得分:0)

答案是如此嵌套你的IIfs:

=IIf(Fields!ColA.Value = "Online", IIf(Fields!ColB.Value = "Start", IIf(Fields!ColC.Value = "Regular", Fields!Count.Value, 0), 0), 0)

答案 1 :(得分:0)

我发现了我的问题。

当我创建Tablix时,我手动添加了一堆行和列来显示数据,并且这样做会删除链接到DataSet的行和列(不知道我是怎么做的)。

我担心无法显示所有可能的输出(即需要显示计数为零的行)。我重新设计了我的查询以包含零条目并使用新查询重新创建报告,所有事情都解决了。

我知道作为一个菜鸟我不应该感到难过,但是说真的,呃 - 呃。

答案 2 :(得分:-1)

我没有有效的SSRS安装试试这个,但是如果你在每个子句周围加上括号会怎样?

=iif((Fields!ColA.Value = "Online") AND (Fields!ColB.Value = "Start") AND (Fields!ColC.Value = "Regular"), Fields!Count.Value, 0)

仅供参考,方便的文档:https://msdn.microsoft.com/en-us/library/ms157328.aspx

我现在回想一下,我通常将这种逻辑移到SQL查询中,这可以使调试更容易,甚至可以促进单元测试。例如,您可以在select语句中添加一个字段,例如:

SELECT CASE WHEN ColA == 'Online' AND 
                    ColB == 'Start' AND
                    ColC == 'Regular'
            THEN [Count]
            ELSE 0 END as ColD,

现在你可以简单地参考SSRS中的ColD。