检测时间序列中的状态变化

时间:2012-10-26 14:15:39

标签: sql

我有一个表,其中所有记录都有id,timestamp和布尔值。我需要发现布尔值在1秒内对哪个记录的变化为false,对于相同的id是真的。

我一直在研究以下声明,但在做了一些研究之后,我觉得CASE结合FETCH声明可能会更好,但我没有找到一个很好的例子,它们被一起使用。

SELECT *  
FROM Table_1  
WHERE timestamp IN(  
    SELECT DATEADD(Second, 1, timestamp)  
    from Table_1  
    where Boolean = 1)  
AND ID in (  
    SELECT ID   
    from Table_1 where Boolean = 1)  
AND Boolean = 0

1 个答案:

答案 0 :(得分:1)

怎么样:

Select Distinct
  t1.id
From
  Table_1 t1
    Inner Join
  Table_1 t2
    On
      t1.Id = t2.Id And 
      t1.Boolean = True And 
      t2.Boolean = False And
      DateDiff(Second, t1.Timestamp, t2.Timestamp) Between 0 And 1

关于你在join子句中加入了多少以及你在where子句中加入了多少的味道。

编辑

  • 添加了截然不同的
  • 在日期差异上设置最小界限