[英]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.