如何合并两个表中的数据

戈壁上的月光 2015-07-28 02:37:43
表1
ID 、名字 、时间
1 A 2015-07-28 06:52:22.000
1 D 2015-07-28 06:53:30.000
2 D 2015-07-28 06:52:22.000

表2
ID、地址、时间
1 东京 2015-07-28 06:53:12.000
1 北京 2015-07-28 06:53:42.000
2 北京 2015-07-28 06:53:0.000

想得到的结果
1 A 东京 2015-07-28 06:53:12.000
1 D 北京 2015-07-28 06:53:42.000
2 D 北京 2015-07-28 06:53:0.000
就是表二每一条记录取表一中同ID,时间较接近的名字字段来补充,这个该怎么合并?
...全文
104 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
感谢二位!问题解决
  • 打赏
  • 举报
回复
Haytor 2015-07-28
用两个时间的差会准确一点,脚本如下:

WITH Tab1(ID,EnName,nDateTime)AS(
    SELECT 1,'A','2015-07-28 06:52:22.000' UNION ALL
    SELECT 1,'D','2015-07-28 06:53:30.000' UNION ALL
    SELECT 2,'D','2015-07-28 06:52:22.000'
)
,Tab2(ID,CnName,nDateTime)AS(
    SELECT 1,'东京','2015-07-28 06:53:12.000' UNION ALL
    SELECT 1,'北京','2015-07-28 06:53:42.000' UNION ALL
    SELECT 2,'北京','2015-07-28 06:53:00.000'
)
SELECT
	a.ID,c.EnName,a.CnName,a.nDateTime,c.nDateTime
FROM 
	Tab2 a 
OUTER APPLY( SELECT TOP 1 b.ID,b.EnName,b.nDateTime FROM Tab1 b WHERE b.ID = a.ID ORDER BY ABS(DATEDIFF(MICROSECOND,b.nDateTime,a.nDateTime))) c

  • 打赏
  • 举报
回复
Tiger_Zhao 2015-07-28
更正:少了同ID的条件
        SELECT t2.ID, t1.名字, t2.地址, t2.时间
FROM 表2 t2
CROSS APPLY (
SELECT TOP 1 名字
FROM 表1
WHERE ID = t2.ID
AND 时间<= t2.时间
ORDER BY 时间 DESC
) t1

         ID 名字 地址 时间
----------- ---- ---- -----------------------
1 A 东京 2015-07-28 06:53:12.000
1 D 北京 2015-07-28 06:53:42.000
2 D 北京 2015-07-28 06:53:00.000
  • 打赏
  • 举报
回复
Tiger_Zhao 2015-07-28
/* 测试数据
WITH 表1(ID,名字,时间)AS(
SELECT 1,'A','2015-07-28 06:52:22.000' UNION ALL
SELECT 1,'D','2015-07-28 06:53:30.000' UNION ALL
SELECT 2,'D','2015-07-28 06:52:22.000'
)
,表2(ID,地址,时间)AS(
SELECT 1,'东京','2015-07-28 06:53:12.000' UNION ALL
SELECT 1,'北京','2015-07-28 06:53:42.000' UNION ALL
SELECT 2,'北京','2015-07-28 06:53:00.000'
) */
SELECT t2.ID, t1.名字, t2.地址, t2.时间
FROM 表2 t2
CROSS APPLY (
SELECT TOP 1 名字
FROM 表1
WHERE 时间<= t2.时间
ORDER BY 时间 DESC
) t1

         ID 名字 地址 时间
----------- ---- ---- -----------------------
1 A 东京 2015-07-28 06:53:12.000
1 D 北京 2015-07-28 06:53:42.000
2 A 北京 2015-07-28 06:53:00.000
  • 打赏
  • 举报
回复
发帖
疑难问题

2.1w+

社区成员

MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
加入社区
帖子事件
创建了帖子
2015-07-28 02:37
社区公告
暂无公告