2017-03-24 2 views
1

다음과 같은 데이터 테이블이 있습니다. 각 [Sstage] 개 중 [Action] 개를 [ID] 개로 [Time] 개를 기준으로 가져오고 싶습니다.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

아마도이 것은 아마도 가장 분명하지 않을 수 있습니다.

[Stage]에 대해 Max([Time])의 상태를 확인해야합니다. Last()을 사용하여 가까이 있지만 그 방법은 논리적 마지막 행을 가져 오는 것입니다. 데이터가 정렬되지 않으면 바람직하지 않은 결과가 발생합니다. 따라서 최신 날짜를 얻으려면 Max() 메서드를 사용하십시오. 당신이 상관 관계 [Action]를 원하기 때문에이 ... 계산 된 열에서 [Time]을 둘 것입니다 지금

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

는 ..., 우리는 IF() 성명에서 찾을 수 있다는 둥지에 필요한 [Action]

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

이제 계산 된 열에 [Action]이 올바른 것이지만 Max([Time])이 포함 된 행에만 적용됩니다.

마지막 단계는 한 번 더 Over() 방법으로 그룹화하여 [ID],[Stage]에서이 값을 적용하는 것입니다

First(If([Time]=Max([Time]) OVER (Intersect([ID],[Stage])),[Action])) OVER (Intersect([ID],[Stage])) 
관련 문제