两表关联,其中一表查时间最新那条记录

wsxcy66668888 2017-12-04 10:13:26

两张表,表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中离当前时间最近的一个时间和当前时间相比有多少天。

请教,谢谢老师们

...全文
331 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35178830 2017-12-04
  • 打赏
  • 举报
回复
SELECT MAX(ktime) AS zuida,#a.name , DATEDIFF(DAY, MAX(ktime),GETDATE()) FROM #a JOIN #B ON #B.name = #A.name GROUP BY #A.name
wsxcy66668888 2017-12-04
  • 打赏
  • 举报
回复
感谢,非常完美地解决了问题
二月十六 2017-12-04
  • 打赏
  • 举报
回复
--测试数据
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


27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧