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

日期为离当前日期最近的两个日期比如这表里查询结果应为张工... 日期为离当前日期最近的两个日期 比如这表里查询结果应为 张工 展开
 我来答
yygll123
2013-08-08 · 超过20用户采纳过TA的回答
知道答主
回答量:60
采纳率:50%
帮助的人:33.1万
展开全部

把使用别名变为两个表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天是吗?
如果是我说的这种也有可能查出来不只一个名字是吧?
木泰兴
2013-08-15 · 超过23用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:24.9万
展开全部
select * from 表名 where riqi between
(select DateAdd(d,-90, riqi) from 表名 where id =16)
and (select riqi from 表名 where id =16)
你RIQI列必须是日期类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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
更多追问追答
追问
只有一个表呀
追答
对啊,难道同一个表就不能这样吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式