我有一个表
id 书名 价格 日期
1 a 1.5 2017.11.1
2 a 1.3 2017.11.2
3 a 1.1 2017.11.4
4 b 3.5 2017.11.1
5 b 3 2017.11.3
6 c 10 2017.11.2
7 c 8 2017.11.5
现在想同时查询a,b书 id为3跟5这两条记录根据日期往前最近一次的数据,应该怎么写,谢谢
...全文
11167打赏收藏
sql根据条件查询最近的一条记录
我有一个表 id 书名 价格 日期 1 a 1.5 2017.11.1 2 a 1.3 2017.11.2 3 a 1.1 2017.11.4 4 b 3.5 2017.11.1 5 b 3 2017.11.3 6 c 10 2017.11.2 7 c 8 2017.11.5 现在想同时查询a,b书 id为3跟5这两条记录根据日期往前最近一次的数据,应该怎么写,谢谢
select b.*
from tb a
cross apply(
select top 1 * from tb bb
where bb.书名 = a.书名 and bb.id <> a.id
order by abs(datediff(day, a.日期, bb.日期)) -- 如果最近的意思是离指定的记录天数最少的话
)b
where a.id in (3, 5)
id 书名 价格 日期
1 a 1.5 2017.11.1
2 a 1.3 2017.11.2
3 a 1.1 2017.11.4
4 b 3.5 2017.11.1
5 b 3 2017.11.3
6 c 10 2017.11.2
7 c 8 2017.11.5
现在想同时查询a,b书 id为3跟5这两条记录根据日期往前最近一次的数据
获取到的数据是a,b输id为2跟4这两条数据