【问题标题】:Looking for SSRS filter which is identical to the SQL "IN" clause寻找与 SQL“IN”子句相同的 SSRS 过滤器
【发布时间】:2017-08-14 19:00:08
【问题描述】:

我正在尝试为我的 SSRS 报告中的一个字段设置条件格式。会改变字体颜色的基本格式。这是我在报表生成器中的原始表达式:

=IIf(Fields!delta.Value <
            IIf("ex1"=Fields!ID_name.Value
                ,0.95
                    ,IIf("ex2"=Fields!ID_name.Value
                        ,0.988
                        ,0
                    )
                )
,"Red"
,"Black")

但是,我必须为 100 多个不同的“ID_name”值执行此操作,这些值都共享共同的“delta”值。

我想知道是否有类似于 SQL 中的 IN 子句的东西,可以让我将所有“ID_name”值粘贴到 ('','','') 格式中,这样会更容易吗?像这样的:

=IIf(Fields!delta.Value <
    IIF(Fields!ID_name.Value IN ('ex1','ex2','ex3','...')
        ,0.95
            ,IIF(Fields!ID_name.Value IN ('ex4','ex5','ex6','...')
                ,0.988
                ,0
                )
                )
,"Red"
,"Black")

我尝试了 IIf(InStr() 方法,但我的“ID_name”与其他具有不同 delta 值的名称共享相似的名称,因此包含子句不起作用。

这可能吗?感谢任何和所有输入!谢谢!!

【问题讨论】:

  • ID 名称,即 ex1、ex2 等,可以在 SQL 中访问吗?因为您可以使用参数化的 DataSet 或 DataSet 和 Lookup 函数来解决这个问题。

标签: sql reporting-services


【解决方案1】:

您可以这样做,但您需要将文本值包装在某种分隔符中,该分隔符不会出现在您的值中以进行检查,例如 [ex1][ex2] 等。

您可以使用 contains 方法,但它需要与执行典型 IN 语句的方式相反。像这样的..

IIF ("[ex1][ex2][ex3]".Contains("[" & Fields!ID_name.Value & "]"), 0.95, FalseBitHere)

当然,你可以只使用逗号或任何你喜欢的,只要它不会;出现在您要测试的实际值中。

【讨论】:

  • 感谢您的意见。真的很感激。我决定使用 CASE WHEN 添加另一列,将“ID_name”与其“delta”分组。这只是更容易/更快的选择
猜你喜欢
  • 2012-02-11
  • 2016-06-22
  • 2015-11-03
  • 1970-01-01
  • 2016-07-02
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多