报表制作工具-具有多个值的嵌套if语句进行分类

问题描述

我正在使用Report Builder,在创建计算字段以对另一列中的数据进行分类时遇到问题。

为简化和解释我的目标,

我想创建一个具有4个不同类别的计算字段,并且我认为最好的方法是嵌套if语句。如果那不是最好的功能,请随时纠正我。

Category 1: Let’s just call it “A”
Category 2: “B“
Category 3: “C“
Category 4: “D”

另一列中的值:

简化示例-

  • 数字1-10属于A类,
  • 数字11-20为B,
  • 数字21-30是C,
  • 数字31-40将属于D类

但是,在我的特殊情况下,在这10个连续范围内,这些值的排列并不理想。例如,我有一个33值,该值将是A类别,这使它无法使用大于或小于运算符。

已经解释了我的问题和目标-我的问题是,当我有多个离散值未按连续的数字顺序整齐地组织时,如何为if语句编写语法?

我希望这个问题有意义。

我尝试仅使用一个参数使它继续运行,并在不起作用时陷入困境:

Iif(field data = 1,2,3,4,5,6,7,8,9,10,33,“A”,“Other”)

它不适用于逗号,因此我尝试在每个值之间插入Or运算符,但这也不起作用。

感谢您提供的任何语法提示

解决方法

有几种方法可以做到这一点。


选项1:在您的数据库设计中

我认为最好的方法是在数据库中执行此操作。创建具有这些值/类别对的表,并在需要包含数据的分类视图时简单地加入该表。


选项2:在您的报表设计中

如果您确实必须在报表设计中执行此操作,那么使用SWITCH()可能会更容易,当然也很容易阅读。

给出第二个示例,并将其扩展一点,您可以执行以下操作...

=SWITCH(
        (Fields!myData.Value >=1 AND Fields!myData.Value <=10) OR Fields!myData.Value = 33,"A",(Fields!myData.Value >=11 AND Fields!myData.Value <=15) OR Fields!myData.Value = 34 OR Fields!myData.Value = 39,"B",True,"Other"
        )

SWITCH使用一对值,当该对中的第一个值评估为true时,返回该对中的秒值。

最后的True,"Other"的行为与其他类似。如果先前的条件不匹配,则最后一对始终评估为true,因此将返回“其他”。