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

Eya*_*yal 1 t-sql sql-server 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  
Run Code Online (Sandbox Code Playgroud)

位置:

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
Run Code Online (Sandbox Code Playgroud)

合并表:

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
Run Code Online (Sandbox Code Playgroud)

标有"<"的元素是插入的事件.

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

Fel*_*tan 5

你可以使用UNION ALLAPPLY:

SQL小提琴

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]
Run Code Online (Sandbox Code Playgroud)