繁体   English   中英

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然后执行函数:-)

图1: 在此输入图像描述

“...... [最终]专栏的价值在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM