簡體   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