请教大家一个SQL语句

fangenyuan 2005-06-06 10:38:07
现在有这样的记录
ID RECORD_TIME
1 2005-02-28 18:00:00.000
2 2005-05-30 11:26:36.000
2 2005-04-22 11:09:29.000
2 2005-02-28 18:00:00.000
3 2005-02-28 18:00:00.000
4 2005-02-28 18:00:00.000
5 2005-02-28 18:00:00.000
6 2005-02-28 18:00:00.000
7 2005-02-28 18:00:00.000
8 2005-02-28 18:00:00.000
9 2005-02-28 18:00:00.000
10 2005-02-28 18:00:00.000
11 2005-05-22 09:19:17.000
11 2005-05-04 14:02:37.000
11 2005-02-28 18:00:00.000

现在想取离2005-6-1最近的每个ID的记录
例如ID为2的记录应该取
2 2005-05-30 11:26:36.000
2 2005-04-22 11:09:29.000

这样的sql语句应该怎么写?
...全文
149 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangenyuan 2005-06-06
  • 打赏
  • 举报
回复
还是对于每一个ID将最近的两条记录写入临时表方便一点
dh20156 2005-06-06
  • 打赏
  • 举报
回复
TRY:
SELECT *
FROM (SELECT TOP 10000 id, RECORD_TIME, CASE WHEN DATEDIFF(n, RECORD_TIME,
'2005-6-1') > 0 THEN DATEDIFF(n, RECORD_TIME, '2005-6-1')
ELSE - DATEDIFF(n, RECORD_TIME, '2005-6-1') END AS f
FROM temptable
ORDER BY id, f) c
WHERE f IN
(SELECT TOP 2 f
FROM (SELECT TOP 10000 id, RECORD_TIME, CASE WHEN DATEDIFF(n,
RECORD_TIME, '2005-6-1') > 0 THEN DATEDIFF(n, RECORD_TIME,
'2005-6-1') ELSE - DATEDIFF(n, RECORD_TIME, '2005-6-1')
END AS f
FROM temptable
ORDER BY id, f) t
WHERE c.id = t .id)
fangenyuan 2005-06-06
  • 打赏
  • 举报
回复
哪个高手帮我一下 ?
fangenyuan 2005-06-06
  • 打赏
  • 举报
回复
o.....oracle?~MS SQL的怎么写啊~~
沝林 2005-06-06
  • 打赏
  • 举报
回复
rownum 是ORACLE数据库表的一个伪列,用来返回行号的
不过jia20003(gloomy fish)写的有问题,应该是
select * from(select * from tbale where RECORD_TIME <= 2005-04-22
order by RECORD_TIME desc) where rownum < 2
fangenyuan 2005-06-06
  • 打赏
  • 举报
回复
to jia20003(gloomy fish) 你的这个rownum 怎么用?好像没有这个函数吧
gloomyfish 2005-06-06
  • 打赏
  • 举报
回复
select * from tbale where RECORD_TIME <= 2005-04-22
and rownum <=2 order by RECORD_TIME desc 离20050402最近的两条!!
fangenyuan 2005-06-06
  • 打赏
  • 举报
回复
to lstup(精灵,找工作(福建)ing...) 这样不能保证每个ID有两条 有可能是大于两条的
fangenyuan 2005-06-06
  • 打赏
  • 举报
回复
to 这样不能保证每个ID有两条 有可能是大于两条的
fangenyuan 2005-06-06
  • 打赏
  • 举报
回复
这里面每个ID可能有多条记录,也可能只有一条记录,没有时间范围

现在只想找出距离某个日期最近的每个ID的两条记录,若该ID只有一个记录的话则就取这一条记录就可以了
jackycxg 2005-06-06
  • 打赏
  • 举报
回复
想不出来,帮不上忙。。
lstup 2005-06-06
  • 打赏
  • 举报
回复
RECORD_TIME <= 2005-04-22
这个不知道可不可以,如果不可以的话就用CData,没测试过,没用过时间做条件对比
lstup 2005-06-06
  • 打赏
  • 举报
回复
select * from tbale where RECORD_TIME <= 2005-04-22 order by RECORD_TIME desc
jolinkyo 2005-06-06
  • 打赏
  • 举报
回复
离2005-6-1最近?
总该有个时间范围
fangenyuan 2005-06-06
  • 打赏
  • 举报
回复
谁能回答我???
fangenyuan 2005-06-06
  • 打赏
  • 举报
回复
ding~
fangenyuan 2005-06-06
  • 打赏
  • 举报
回复
现在想取离2005-6-1最近的每个ID的两条记录,若该ID只有一条记录的话则取该条记录。

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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