首页 > 解决方案 > 返回一列一致但另一列在一段时间内发生变化的行

问题描述

我试图找出计算机何时从一个接入点跳转到另一个接入点并在数据库中捕获数据。我每小时捕获一次数据,因此电脑名称会出现多次,但只有当电脑从一台切换到另一台时,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)。

标签: sqlsql-server

解决方案


存在:

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)
)

推荐阅读