2012-10-26 3 views
0

모든 레코드에 ID, 타임 스탬프 및 부울 값이있는 테이블이 있습니다. 나는 어느 레코드에서 부울이 동일한 id에 대해 1 초 이내에 false로 변경된다는 것을 발견해야합니다.시 계열 내 상태 변경 감지

다음 진술을 수행했지만 일부 연구를 수행 한 후에 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

가 FETCH 날짜 차이에 결합 된 별개의

  • 넣어 최소 당신이 커서에서 다음 행을 얻을 수있는 T-SQL 명령이 추가되었습니다. 표준 SQL과는 아무런 관련이 없습니다. http://msdn.microsoft.com/en-us/library/ms180152.aspx를 참조하십시오. –

  • +0

    몇 가지 샘플 데이터를 제공 할 수 있습니까? – Kermit

    +0

    @MellonJollie SQL Server를 사용하고 있습니까? – Kermit

    답변

    1

    방법에 대해 : where 절에

    당신이 조인 절에 넣어 얼마나 그에게로 맛의
    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 
    

    문제와 얼마나 넣어.

    편집은

    +0

    나는 그 진술로 어디로 가고 있는지 알 것 같지만, 테이블 자체가 107,000에 불과할 때 1 백만 행 이상을 반환합니다. – Mellonjollie

    +0

    나는 여기에 별개의 것을 넣었습니다 – Laurence

    +0

    유레카, 알겠습니다! Laurence 도움에 감사드립니다. – Mellonjollie