合并两个表,同时将一个列从一个表拖到另一个表

时间:2015-06-03 05:54:55

标签: sql-server tsql sql-server-2014

使用Sql Server 2014

我有两个表 - 事件和位置,它们共享一个时间列,我需要按时间将它们合并到一个表中。在Events表中有一个Event列,我需要在该事件后面的所有Locations行中放置(时间方面),这是一个例子:

活动:

time   event  
------------  
09:00   2  
09:10   3  
10:15   1  
10:17   2  
10:30   3  

地点:

time    X   Y
-------------
09:01   1   3
09:02   2   3
09:05   4   1
09:09   6   4
09:10   7   8
09:11   8   8
09:12   9   7
10:17   1   2
10:19   5   4
10:20   4   3
10:25   5   4
10:28   3   5

合并表:

time    X   Y  event
--------------------
09:00   0   0  2
09:01   1   3  2   <
09:02   2   3  2   <
09:05   4   1  2   <
09:09   6   4  2   <
09:10   0   0  3
09:10   7   8  3   <
09:11   8   8  3   <
09:12   9   7  3   <
10:15   0   0  1
10:17   0   0  2
10:17   1   2  2   <
10:19   5   4  2   <
10:20   4   3  2   <
10:25   5   4  2   <
10:28   3   5  2   <
10:30   0   0  3

标有'&lt;'的元素是插入的事件。

欢迎任何关于如何执行此任务的想法和帮助。

1 个答案:

答案 0 :(得分:5)

您可以使用UNION ALLAPPLY

SQL Fiddle

SELECT 
    [Time], X = 0, Y = 0, [Event]
FROM [Events]

UNION ALL

SELECT l.*, x.Event
FROM Locations l
CROSS APPLY(
    SELECT TOP 1 * 
    FROM [Events]
    WHERE [Time] <= l.[Time]
    ORDER BY [Time] DESC
)x
ORDER BY [Time]
相关问题