2017-03-24 58 views
1

我有一個數據表如下。我想根據[Time]得到每個[ID]的每個[Sstage]的最後[Action]spotfire如何獲得列中的最後一個值?

我試過了:last(action)over intersect([id],[stage],[time])但它沒有給我我想要的東西。有人有什麼主意嗎?

+----+---------+-----------------+------------+-----------------+ 
| ID | Stage |  Action  | Time | Last_Action | 
+----+---------+-----------------+------------+-----------------+ 
| 1 | CEO  | Decline   | 11/01/2016 | requestmoreinfo | 
| 1 | CEO  | Approve   | 11/02/2016 | requestmoreinfo | 
| 1 | CEO  | Approve   | 11/03/2016 | requestmoreinfo | 
| 1 | CEO  | requestmoreinfo | 11/04/2016 | requestmoreinfo | 
| 1 | Manager | requestmoreinfo | 11/05/2016 | Decline   | 
| 1 | Manager | requestmoreinfo | 11/06/2016 | Decline   | 
| 1 | Manager | Approve   | 11/07/2016 | Decline   | 
| 1 | Manager | Decline   | 11/08/2016 | Decline   | 
| 2 | User | Decline   | 11/09/2016 | Approve   | 
| 2 | User | Decline   | 11/10/2016 | Approve   | 
| 2 | User | Approve   | 11/11/2016 | Approve   | 
+----+---------+-----------------+------------+-----------------+ 

回答

2

這其中可能就沒有那麼明顯,因爲大多數。

我們必須通過[ID][Stage]瞭解Max([Time])的狀態。您近距離使用Last(),但該方法是獲得邏輯上的最後一行。如果你的數據沒有排序......那麼這會產生不希望的結果。因此,請使用Max()方法獲取最新日期。

Max([Time]) OVER (Intersect([ID],[Stage])) 

現在...這會把[Time]在計算列...因爲你想要的相關[Action],我們需要窩在一個IF()聲明找到[Action]

If([Time]=Max([Time]) OVER (Intersect([ID],[Stage])),[Action]) 

現在,這將在您的計算列中輸入正確的[Action],但僅限於包含Max([Time])的行。

最後一步是應用在您[ID],[Stage]該值與一個更Over()方法分組

First(If([Time]=Max([Time]) OVER (Intersect([ID],[Stage])),[Action])) OVER (Intersect([ID],[Stage])) 
相關問題