SQL Server 查询语句难题求解

johe 2010-07-22 02:44:23
现有表A(a1,a2,a3,a4,a5,……),其中a1唯一;a2为对应B表的ID号,可重复;a3为数据插入的时间;a4为数据提交人;……
现想根据a3在某时间段内,查出同一a2所对应的最近插入的数据。
如:
a1 a2 a3 a4 ……
11 20 2010-07-01 admin
12 20 2010-07-02 admin
13 21 2010-07-01 admin
14 20 2010-07-11 admin

结果是:
a1 a2 a3 a4 ……
14 20 2010-07-11 admin
12 20 2010-07-02 admin
...全文
76 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
johe 2010-07-22
  • 打赏
  • 举报
回复
不好意思,弄错了,应该是下面这样的
结果是:
a1 a2 a3 a4 ……
13 21 2010-07-01 admin
14 20 2010-07-11 admin
zc_0101 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 johe 的回复:]

引用 5 楼 xys_777 的回复:
问题很模糊,怎么叫最近


最近就是根据a3(时间)最后插入的那条数据。
[/Quote]
那为什么你给出的结果中没有21的,而20的却取出来两条?
johe 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xys_777 的回复:]
问题很模糊,怎么叫最近
[/Quote]

最近就是根据a3(时间)最后插入的那条数据。
永生天地 2010-07-22
  • 打赏
  • 举报
回复
我想应该是这样
select * from a t
where a3 between '2010-07-02' and '2010-07-11'
and not exists(select 1 from a where a2=t.a2 and a3>t.a3 )
永生天地 2010-07-22
  • 打赏
  • 举报
回复
问题很模糊,怎么叫最近

shencb2004 2010-07-22
  • 打赏
  • 举报
回复
现想根据a3在某时间段内,查出同一a2所对应的最近插入的数据
select * from A
where a2=****and a3 between date and data
johe 2010-07-22
  • 打赏
  • 举报
回复
A([a1] varchar(50),[a2] varchar(50),[a3] datetime,[a4] varchar(5))
[a1]时间+单位代码,如1007221350490201
[a2]时间+单位代码,如201007221458550201
王向飞 2010-07-22
  • 打赏
  • 举报
回复
----------
a1 a2 a3 a4
----------
14 20 2010-07-11 00:00:00.000 admin
12 20 2010-07-02 00:00:00.000 admin
11 20 2010-07-01 00:00:00.000 admin
13 21 2010-07-01 00:00:00.000 admin
王向飞 2010-07-22
  • 打赏
  • 举报
回复
--> 测试数据:@tb
declare @tb table([a1] int,[a2] int,[a3] datetime,[a4] varchar(5))
insert @tb
select 11,20,'2010-07-01','admin' union all
select 12,20,'2010-07-02','admin' union all
select 13,21,'2010-07-01','admin' union all
select 14,20,'2010-07-11','admin'

select * from @tb ORDER BY a2,a3 DESC

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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