在一个有id 姓名 日期的sql数据表中如何查询最近两个日期相差大于90天的姓名?

日期为离当前日期最近的两个日期 比如这表里查询结果应为 张工

把使用别名变为两个表a,b,不知道你说的最近两个日期是指数据库ID相邻的两个日期,还是离当前日期最近,我理解为ID相邻最近,日期相差我用 datediff函数,取了一下绝对值,查询结果如我截图,不知道你需要得到的是哪一个姓名,是前一条记录姓名还是后一条记录的姓名,我理解为后一条姓名。

查询语句是

SELECT a.id, a.姓名, a.日期,b.日期
FROM info  a ,info  b
where a.id=b.id+1 and Abs(DateDiff('d',a.日期,b.日期))>90

如果要得到前一条记录的语句如下,把加号改为减号

SELECT a.id, a.姓名, a.日期,b.日期
FROM info  a ,info  b
where a.id=b.id-1 and Abs(DateDiff('d',a.日期,b.日期))>90

不知道帮到你没有。也许其他朋友也可以参考。另外也许有更好的办法

注:我是ACCESS里测试的。

追问

很感谢 但可能你理解有点偏差 我发了个具体的表 要不你再看看吧

追答

你的提问任然不清楚。是不是同一个名字最近的两个记录的日期与当前日期相差均大于90天的。而不是最近的两个记录的日期之间的相差大于90天是吗?
如果是我说的这种也有可能查出来不只一个名字是吧?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-15
select * from 表名 where riqi between
(select DateAdd(d,-90, riqi) from 表名 where id =16)
and (select riqi from 表名 where id =16)
你RIQI列必须是日期类型
第2个回答  2013-08-07
SELECT Name FROM Table a WHERE EXISTS
(
SELECT 1 FROM Table b WHERE b.id = a.id AND datediff(d,b.createtime,a.createtime) > 90
)
ORDER BY a.createtime DESC追问

只有一个表呀

追答

对啊,难道同一个表就不能这样吗

追问

同一个表怎么会有table a和 table b呢?

相似回答