Sql 检测时间序列中状态的变化
我有一个表,其中所有记录都有一个id、时间戳和一个布尔值。我需要找出哪些记录中的布尔值在同一id为true的1秒内变为false 我一直在研究下面的语句,但在做了一些研究之后,我觉得CASE和FETCH语句结合使用可能会更好,但我还没有找到一个将它们结合使用的好例子Sql 检测时间序列中状态的变化,sql,Sql,我有一个表,其中所有记录都有一个id、时间戳和一个布尔值。我需要找出哪些记录中的布尔值在同一id为true的1秒内变为false 我一直在研究下面的语句,但在做了一些研究之后,我觉得CASE和FETCH语句结合使用可能会更好,但我还没有找到一个将它们结合使用的好例子 SELECT * FROM Table_1 WHERE timestamp IN( SELECT DATEADD(Second, 1, timestamp) from Table_1 wh
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
那么:
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子句中分别放了多少,这是一个品味问题
编辑
- 添加不同的
- 对日期差设置最小界限