2017-09-18 8 views
0

고객과 관련된 일정이있는 데이터가 포함 된 표가 있으며 시간 순서가 표시됩니다. 관련 필드는 EventID (고유 키), CustomerID (각 고객 고유), EventType 및 EventDate입니다.테이블에 시간순으로 다음 항목 가져 오기

이제 특정 이벤트가 다른 이벤트를 지나서 발생했을 때 표시되는 계산 된 열을 추가하고 싶습니다. 예를 들어, "Purchase"유형의 이벤트 후에 첫 번째 이벤트 (EventDate에 따라) 이후에 발생하는 동일한 고객 ID에 대해 "Payment Received"유형의 이벤트가있는 경우,

Excel에서 이제는 vlookup을 설정했지만 PowerPivot에는 그러한 기능이 없습니다. 나는 또한 RELATED()을 통해 관련 이벤트를 얻기 위해 테이블을 분할하려고 시도했지만, 결과 관계가 다 대다이므로 PowerPivot에서 오류가 발생합니다.

PowerPivot에서이 작업을 수행 할 수 있습니까? (나는 또한 문제를 해결할 수 있다면 Power Query의 데이터를 조작 할 수있을 것이다.) 편집 : SQL과 관련된 제 문제에 대한 해결책을 찾았습니다. 그래도 PowerPivot에서 직접 솔루션에 관심이 있다면 그래도 가능합니다.

답변

0

SQL을 통해로드 된 데이터를 변환하는 솔루션입니다.

SELECT TOP 1 WITH TIES ev.* 
    ,results.EventType 
    ,results.EventDate 
    FROM CustomerEvents ev 
    LEFT JOIN (SELECT CustomerID 
     EventType 
     EventDate 
     FROM CustomerEvents 
     WHERE EventType = 'Payment received' or EV_EventCode = 'Payment not received') as payments 
    ON payments.CustomerID = ev.CustomerID 
    AND payments.EventDate > ev.EventDate 
    WHERE EventType = 'Purchase' 
    ORDER BY ROW_NUMBER() over (PARTITION BY EventID ORDER BY payments.EventDate ASC) 

Order By payments.EventDate Asc는 그때 실수를위한 것입니다보다 훨씬 이전에 구입에 지불 이벤트를 정렬에서 저를 방지 TOP 1를 통해 필터링됩니다 구매 이벤트 후 가장 초기의 행사 날짜를 얻을 수 있도록합니다.