2014-10-07 91 views
0

加入我有兩個表,一個叫事件具有以下數據類型:SQL連接與最新記錄

CustomerID int 
eventId int 
eventDate datetime 
eventtype varchar(20) 

並用以下dataypes另一個叫活動。

CustomerID int, 
ActivityId, 
activitytime datetime 

你可以找到在http://sqlfiddle.com/#!2/4ddbf/4

我的目標的例子就是把每一項活動,並追加到它的結束的事件ID和事件類型目前的狀態,這依賴於時間戳

例如:一行的輸出將是

CUSTOMERID----------TIMESTAMP----------- EVENTTYPE-----eventID 
141----------------2012/02/08 12:14:35.697-----Packaging-----------1 

我試圖做一個聯合和一個聯合,但會結束與任何一個表的排列每個活動都與事件類型的每個可能的組合相關聯。或者與工會合作,我能夠得到一張合併兩張桌子的桌子,並用n/a填補了空白點,我的猜測是我必須編寫一個功能,我可以在日期中傳遞,然後找到最近的事件在指定的日期之前。

回答

0

您可以通過在事件ID做組和獲得最新信息,該事件

SQL小提琴:http://sqlfiddle.com/#!2/26199/2

SELECT E.CustomerID, 
     MAX(A.activitytime) as TIMESTAMP, 
     MAX(E.eventtype) as EventType, 
     E.eventID 
FROM Event E 
JOIN Activity A 
ON E.CustomerID = A.CustomerID 
GROUP BY E.CustomerID, E.EventId