sql - 返回一列一致但另一列在一段时间内发生变化的行
问题描述
我试图找出计算机何时从一个接入点跳转到另一个接入点并在数据库中捕获数据。我每小时捕获一次数据,因此电脑名称会出现多次,但只有当电脑从一台切换到另一台时,ap 才会改变。我需要一个示例查询才能返回。
我只想在过去 12 小时内计算机上的 ap 发生更改时返回一行。
我尝试选择不同的两个字段,然后将它们解析出来,但我相信必须有更好的方法。
示例表如下所示:
1 PC1 AP1 时间
2 PC2 AP1 时间
3 PC3 AP2 时间
4 PC4 AP2 时间
5 PC5 AP3 时间
6 PC1 AP1 时间
7 PC2 AP2 时间
8 PC3 AP2 时间
9 PC4 AP2 时间
10 PC5 AP3 时间
所以在这个例子中,唯一返回的信息应该是关于 PC2,因为它是唯一改变 AP 的单元,所以我会得到这两行(2 和 7)。
解决方案
存在:
select t.* from tablename t
where exists (
select 1 from tablename
where computername = t.computername and ap <> t.ap
and time between dateadd(hour, -12, t.time) and dateadd(hour, 12, t.time)
)
推荐阅读
- flutter - Flutter Flat Button 在其可见边框之外是可点击的
- excel - 为什么几分钟后正常运行的 ODBC 连接会失败(Excel VBA / Oracle)?
- node.js - 从可调用的 https 云函数将图像上传到 Firebase 存储
- google-cloud-platform - GCP Cloud SQL 作为 AWS RDS Mysql 的副本
- javascript - jQuery - onClick 为 ScrollLeft 设置动画 - 不工作
- docker - docker-compose 在后台构建?
- copy - 使用java将文件复制到android studio中的外部存储
- json - AT 命令对 JSON 源的 HTTP 请求,状态为 200,但响应为空
- python-3.x - 如何在表单参数中正确传递服务器 ip 地址?
- javascript - 计算已知角度的测量值