【问题标题】:How do I use an IN statement in SSRS Formula如何在 SSRS 公式中使用 IN 语句
【发布时间】:2023-03-13 07:40:01
【问题描述】:

是否有一种简单的方法可以在 SSRS 公式中执行 IN 语句或类似的操作以进行 iff 语句比较,而无需重复切换 16 次?

这是我希望完成的,而无需为每个值编写语句或单独的 OR 即(Fields!FieldName.Value = "01" OR Fields!FieldName.Value = "02"...etc):

=iif((Fields!FieldName.Value IN
("01","02","03","06","08","09","10","12","15","19"),"TypeA",
iff((Fields!ProdCode.Value IN ("04","07","11","13","14","16"),
"TypeB","TypeC")

【问题讨论】:

  • 您能否修改 SQL 以将其连接到将值转换为字符串 TypeA、TypeB、TypeC 的表?

标签: sql reporting-services ssrs-2014


【解决方案1】:

或者这个:

=switch( 
Instr( "," & "01,02,03,06,08,09,10,12,15,19" & ",", "," & Fields!FieldName.Value & ",") > 0  ,"TypeA",
Instr( "," & "04,07,11,13,14,16" & ",", "," & Fields!ProdCode.Value & ",") > 0  ,"TypeB",
True, "TypeC")

【讨论】:

    【解决方案2】:

    我已经模拟了一个连接到在 sql 中生成的表的示例。这比在报告中做更有效率

    SELECT a,b,c,d, etc
    , Lookup.FieldName, Lookup.TypeLabel
    FROM Tables INNER JOIN 
    (SELECT '01' AS FieldName, "TypeA" as TypeLabel
    UNION ALL
    SELECT '02' , "TypeA"
    UNION ALL
    SELECT '03' , "TypeA"
    UNION ALL
    SELECT '04' , "TypeB"
    UNION ALL
    ...
    
    SELECT '18' , "TypeC"
    UNION ALL
    SELECT '19' , "TypeC") LookUp 
    ON Tables.FieldName = Lookup.FieldName
    

    【讨论】:

      【解决方案3】:

      试试这个:

      =Switch(
      Array.IndexOf(Split("01,02,03,06,08,09,10,12,15,19",","), Fields!FieldName.Value)>-1,"TypeA",
      Array.IndexOf(Split("04,07,11,13,14,16",","),Fields!FieldName.Value)>-1,"TypeB",
      true,"TypeC"
      )
      

      如果这有帮助,请告诉我。

      【讨论】:

      • 我可以使用 saurus 的代码,但感谢您的帮助!
      • 此代码也可以使用,但是如果字符串中的 1 个或多个值包含分隔符 (","),则会出现问题。 saurus 的解决方案会有类似但略有不同的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多