如何高效的查询是否存在这样的记录:最新的符合特定条件的两条记录是上一个小时和上上一个小时的数据?

叶子哟 2008-12-30 11:38:40
如有表user,其中字段:id,userid和createtime
id是自增量
userid是条件
createtime是时间型字段
如何判断某个userid最新的两条记录是连续一个小时一条的?
...全文
121 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
viva369 2008-12-30
  • 打赏
  • 举报
回复
写错了

select userid,case when datediff(mi,min(createtime),max(createtime))>60 then '否' else '是' end
from
(
select top 2 * from #t as aa
where userid = 'A' order by createtime desc
)tbl
group by userid

viva369 2008-12-30
  • 打赏
  • 举报
回复

create table #t
(
id int identity(1,1),
userid nvarchar(60),
createtime datetime
)

insert #t select 'A',getdate()
insert #t select 'A',getdate()
go
select userid,case when datediff(mi,min(createtime),max(createtime))>60 then '是' else '否' end
from
(
select top 2 * from #t as aa
where userid = 'A' order by createtime desc
)tbl
group by userid
dawugui 2008-12-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 matq2008 的帖子:]
如有表user,其中字段:id,userid和createtime
id是自增量
userid是条件
createtime是时间型字段
如何判断某个userid最新的两条记录是连续一个小时一条的?
[/Quote]


select m.* , n.* from
(select * , px = (select count(1) from [user] where userid = t.userid and createtime > t.createtime) + 1 from [user] t) m,
(select * , px = (select count(1) from [user] where userid = t.userid and createtime > t.createtime) + 1 from [user] t) n
where m.userid = n.userid and m.px = 1 and n.px = 2 and datediff(hh, n.createtime , m.createtime) = 1

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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