【问题标题】:SSRS IF Statement with Less-than equal to returns bad counts小于等于的 SSRS IF 语句返回错误计数
【发布时间】:2016-05-09 23:36:53
【问题描述】:

SSRS 2008 R2 - 报表生成器 3.0 - 查询 SQL Server 2008 R2

我有一份报告正在从具有“Last_Executed”列的数据库中获取数据。我的数据集正在返回一个查询,该查询具有专用于 DATEDIFF() 的列,该列返回自运行时执行以来的天数。我现在需要的是在过去 7 天键入的过滤器。

您可能会说,“只需创建另一个数据集并将您的查询设置为仅返回这些数据”,我可能会崩溃并这样做,但我不禁认为我拥有的数据有更好的解决方案.

有一个带有占位符的文本框,我想显示这个计数。我已经尝试过(如果字段的语法关闭,那可能只是我的记忆,if 检查是我所质疑的):

=SUM(IIF((Fields!MyData.Value <= 7),1,0),"MyDataSet")

=SUM(IIF(Cint(Fields!MyData.Value <= 7),1,0),"MyDataSet")

=COUNT(Fields!MyData.Value <= 7)

必须在“IF”之外添加范围,以允许引用相关数据。我尝试了“演员表”的变体,但没有一个返回正确的计数。结果集返回 1400 个项目,我的测试数据应根据日期检查返回 41。我分别得到 581、581 和 1400,如果我删除“

为什么“

找到的解决方案:

原来查询返回的 NULL 导致了总和中的错误计数。最终的求和表达式最终是:

=SUM(IIF(IsNothing(Fields!MyData.Value),0,IIF(Fields!MyData.Value <= 7,1,0)),"MydataSet")

IsNothing 检查的 0 为 true 解决了我的问题,可惜我没有先检查 NULL 错误。感谢您的帮助:)

【问题讨论】:

    标签: sql-server-2008-r2 ssrs-2008-r2 reportbuilder3.0


    【解决方案1】:

    我认为 COUNT 不能正常工作 - SSRS 不能正确地将布尔值评估为整数。

    在使用 CINT 将布尔值 MyData 转换为 INT 时,您的第二个 SUM 可能会遇到同样的问题。

    我不明白为什么这不能按预期工作:

    =SUM(IIF(Fields!MyData.Value <= 7, 1, 0), "MyDataSet")
    

    你说当你删除

    【讨论】:

    • 我发现了问题,它是 NULL,不敢相信我没有先检查!我现在正试图从计数中删除 NULL,但仍然得到错误的返回数。例如:code=SUM(IIF(IsNothing(Fields!MyData.Value),IIF((Fields!MyData.Value code 还是得到不过这里的 NULL :)
    • 好吧,我的总和在最后一条评论中很糟糕,我添加了成功的 null 查找,所以我会得到 1400。将其更改为仅在第一个 IF 失败时添加 1 应该可以工作,但现在我得到一个错误 code =SUM(IIF(Fields!MyData.Value = "NULL",0,IIF(Fields!MyData.Value code我迟早会收到的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 2013-12-03
    相关资源
    最近更新 更多