Sql Join加入最新记录

时间:2014-10-07 02:18:02

标签: sql function join union

我有两个表,一个名为Event,具有以下数据类型:

 CustomerID int
 eventId int
 eventDate datetime
 eventtype varchar(20)

和另一个带有以下数据表的Activity。

 CustomerID int,
 ActivityId,
 activitytime datetime

您可以在http://sqlfiddle.com/#!2/4ddbf/4

找到示例

我的目标是接受每个活动,并在其末尾附加eventId和依赖于时间戳的eventtype的当前状态

例如:行的输出为

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

我尝试进行连接和联合,但最终会得到一个表,其中每个活动的排列与事件类型的每个可能组合相关联。或者通过联合,我能够得到一个合并两个表并用n / a填充空白点的表,我的猜测是我将要编写一个我可以在日期中传递的函数,然后找到最近的事件在指定日期之前。

1 个答案:

答案 0 :(得分: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