2014-10-07 52 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