[英]Spotfire - Calculated column based on values in another column in Spotfire
[英]Spotfire Between two values calculated column
我有一个计算列,请参阅下面的语法。
我想要实现的是这个。 如果[Part of Group ?]
有一段文字, [ISPG Grouped]
栏中有RUBU或CABU,则获得[Final]
栏的10%。 但是我还想说的是,如果在没有文字[Part of Group ?]
和并有儒布在[ISPG Grouped]
列和值[Final]
栏为10,000欧元和34,999然后获得4%之间[Final]
专栏
这是我到目前为止的语法
CASE WHEN ([Part of Group ?]!="") AND ([ISPG Grouped]="RUBU") THEN [Final] / 100 * 10
WHEN ([Part of Group ?]!="") AND ([ISPG Grouped]="CABU") THEN [Final] / 100 * 10
WHEN ([Part of Group ?] ="") AND ([ISPG Grouped]="RUBU") AND [Final] <> 10000 34999 THEN [Final] / 100 * 4
ELSE NULL END
错误发生在34,999之后,请参阅下面的图1以获取更多详细信息
基本上我不知道如何在两个值之间执行If然后执行函数:-)
“...... [最终]专栏的价值在10,000欧元到34,999之间...”
你可以将公式的那部分更改为: ... AND [Final] > 10000 AND [Final] < 34999 THEN ...
如果您希望它包含在内,则将运算符更改为<=
和>=
或分别向下和向上递增1。
Mark P的答案将解决语法错误,但您的CASE
逻辑存在缺陷。 一旦满足条件, CASE
表达式将退出。 它不会检查其余条件,因此您的条件顺序在此处很重要。
第一行: WHEN ([Part of Group ?]!="") AND ([ISPG Grouped]="RUBU") THEN
将导致最后一行永远不会被评估,因为它包含相同的最小条件并将退出。 要解决这个问题,请交换它们。
CASE
WHEN ([Part of Group ?]!="") AND ([ISPG Grouped]="CABU") THEN [Final] / 100 * 10
WHEN ([Part of Group ?] ="") AND ([ISPG Grouped]="RUBU") AND [Final] > 10000 AND [Final] < 34999 THEN [Final] / 100 * 4
WHEN ([Part of Group ?]!="") AND ([ISPG Grouped]="RUBU") THEN [Final] / 100 * 10
ELSE NULL END
正如您在此处所看到的,第二个条件比第三个条件更具限制性,因此某些情况会在此失败,但对于第三个案例则评估为true。
如果你把when 1=1 then 1
放在CASE
表达式的顶部,那么你看到的唯一值是1.同样,如果你把它放在最后......这相当于说ELSE 1
从1开始等于1,在地球上:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.