2017-10-12 118 views
0

enter image description here我嘗試了幾個選項,但我沒有得到正確的輸出,所以我重新發布這個問題。如何進行計算,並且只有在列中最少有3個值時才執行計算?

我想執行計算,並且只有在列中最少有3個值時才應該執行。

只有在每列中最少有3個值的情況下才會執行計算,如果沒有3個值,例如:對於項目1 - 期間1,我們沒有任何以前的值,因此它應該終止。對於期間2,我們只有2個值,所以它應該終止。由於第3階段我們有最少3個值,它應該執行計算sum(*last 3 values*)

最終輸出應該是sum(HC)/ SUM(Time)

請參閱附加圖像的數據。

enter image description here

回答

0

對於如果有3個值可用,如果你想在最後3時間的最後3 HC /金額的總和,你可以使用:

if((If(Min(If([HC] is null,-1,[HC])) over (Intersect([Project],LastPeriods(3,[Period])))=-1,0,1))=1,Sum([HC]) over (Intersect([Project],LastPeriods(3,[Period])))/Sum([Time]) over (Intersect([Project],LastPeriods(3,[Period])))) 

如果您想要最後3 HC /該行的時間總和,然後:

if((If(Min(If([HC] is null,-1,[HC])) over (Intersect([Project],LastPeriods(3,[Period])))=-1,0,1))=1,Sum([HC]) over (Intersect([Project],LastPeriods(3,[Period])))/[Time]) 

請注意,這是基於項目分組。如果你需要它按項目,任務,子任務分組,那麼需要在相交處有邏輯。此外,您的數據的順序由「期間」列確定。

+0

嗨Scsimon,這是我再次找到同樣的問題。我使用你給出的第一個公式創建了一個計算列,它給了我最後3個HC的總和。我實際看到的是應該有一個計算,只要有3個值。所以如果你看到週期1沒有以前的值,所以計算不應該執行。對於期間2,只有1個先前的值,因此再次計算不應執行。對於期間3,因爲有3個先前值計算應執行 – BULB

+0

這就是發生在這裏,這就是爲什麼你得到這些行的NULL值。 – scsimon

+0

@bulb這是怎麼回答你的問題? – scsimon