按区域提取最近的记录

taylermail 2010-08-25 09:24:29
表a(id,时间,区域,......)
我想实现分别提取每个区域时间最近的1条记录,该如何写?
...全文
53 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
taylermail 2010-08-25
  • 打赏
  • 举报
回复
但我用你们的方法查出很多记录 我的表是一个视图 有关系嘛
test119 2010-08-25
  • 打赏
  • 举报
回复
select * from table aa where aa.时间=( select top 1 时间 from table bb where bb.区域=aa.区域 order by 时间 desc )
Mark杨 2010-08-25
  • 打赏
  • 举报
回复

declare @tb table(id int,quyu varchar(2),lastTime datetime)

insert @tb
select 1,'1','2010-05-01 12:12:12' union all
select 2,'2','2010-05-02 12:12:12' union all
select 3,'2','2010-05-10 12:12:12' union all
select 4,'3','2010-05-10 12:12:12' union all
select 5,'3','2010-05-11 12:12:12'

SELECT * FROM @tb t1 WHERE NOT EXISTS(
SELECT 1 FROM @tb t2 WHERE t2.quyu=t1.quyu AND t2.lastTime>t1.lasttime
)

/*

id quyu lastTime
----------- ---- ------------------------------------------------------
1 1 2010-05-01 12:12:12.000
3 2 2010-05-10 12:12:12.000
5 3 2010-05-11 12:12:12.000

(所影响的行数为 3 行)
*/


不是你要的结果吗?
taylermail 2010-08-25
  • 打赏
  • 举报
回复
select top 1* from a where 区域='1' order by 时间
union
select top 1* from a where 区域='2' order by 时间
union
select top 1* from a where 区域='3' order by 时间

不对
taylermail 2010-08-25
  • 打赏
  • 举报
回复
我只想对每个区域提取一条出来
guguda2008 2010-08-25
  • 打赏
  • 举报
回复
SELECT * FROM A T1 WHERE NOT EXISTS(
SELECT 1 FROM A T2 WHERE T2.[区域]=T1.[区域] AND T2.[时间]>T1.[时间]
)

27,580

社区成员

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

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