Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 合并两个表,同时将一列从一个表拖动到另一个表_Sql Server_Tsql_Sql Server 2014 - Fatal编程技术网

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

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

使用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   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]