Sql server 合并两个表,同时将一列从一个表拖动到另一个表
使用Sql Server 2014: 我有两个表-事件和位置,它们共享一个时间列,我需要按时间顺序将它们合并到一个表中。在Events(事件)表中,我需要将一个事件列按时间顺序放置在该事件之后的所有位置行中,以下是一个示例: 活动:Sql server 合并两个表,同时将一列从一个表拖动到另一个表,sql-server,tsql,sql-server-2014,Sql Server,Tsql,Sql Server 2014,使用Sql Server 2014: 我有两个表-事件和位置,它们共享一个时间列,我需要按时间顺序将它们合并到一个表中。在Events(事件)表中,我需要将一个事件列按时间顺序放置在该事件之后的所有位置行中,以下是一个示例: 活动: time event ------------ 09:00 2 09:10 3 10:15 1 10:17 2 10:30 3 地点: time X Y ------------- 09:01 1
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
使用“标记的元素可以使用UNION ALL并应用:
您可以使用UNION ALL并应用:
感谢您快速、清晰的回复!我领养它!感谢您快速、清晰的回复!我领养它!
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]