27,580
社区成员
发帖
与我相关
我的任务
分享
两张表,表A结构为:
name(名称) jd(经度) wd(纬度)
---------------------------------------------------------
北京 123.5555 34.555
上海 235.5555 31.589
。。。
表B 结构为
name (名称) ktime (检测时间)
---------------------------------------------------------
北京 2012-05-07 16:19:00.000
北京 2013-06-08 17:19:00.000
北京 2013-08-07 18:19:00.000
北京 2014-09-11 19:19:00.000
上海 2012-06-21 10:19:00.000
上海 2013-08-13 11:19:00.000
.....
问题:
查询出表B中名称与表A相同的地点在表B中离当前时间最近的一个时间和当前时间相比有多少天。
请教,谢谢老师们
--测试数据
if not object_id(N'Tempdb..#A') is null
drop table #A
Go
Create table #A([name] nvarchar(22),[jd] decimal(18,10),[wd] decimal(18,9))
Insert #A
select N'北京',123.5555,34.555 union all
select N'上海',235.5555,31.589
GO
if not object_id(N'Tempdb..#B') is null
drop table #B
Go
CREATE TABLE #B(name NVARCHAR(100),ktime DATETIME)
Insert #B
select N'北京','2012-05-07 16:19:00.000' union all
select N'北京','2013-06-08 17:19:00.000' union all
select N'北京','2013-08-07 18:19:00.000' union all
select N'北京','2014-09-11 19:19:00.000' union all
select N'上海','2012-06-21 10:19:00.000' union all
select N'上海','2013-08-13 11:19:00.000'
Go
--测试数据结束
SELECT #A.* ,
DATEDIFF(DAY, ktime, GETDATE()) AS 天数差
FROM #A
JOIN ( SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY name ORDER BY ktime DESC ) AS num
FROM #B
) t ON t.name = #A.name
AND t.num = 1