0

我有一个表,其中所有记录都有一个 id、时间戳和一个布尔值。我需要发现在哪些记录中,布尔值在同一 ID 为真后的 1 秒内变为假。

我一直在研究以下语句,但在做了一些研究之后,我觉得 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
4

1 回答 1

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 子句中放入多少的品味问题。

编辑

  • 添加了不同的
  • 设置日期差异的最小界限
于 2012-10-26T14:20:05.927 回答