我需要一個sql表的幫助。SQL查詢的問題
表包含以下幾列:
事件ID,是PersonID,事件類型,EVENTTIME(日期時間),以及其他一些不太顯著列。
可以說,兩種主要事件類型是打開一扇門,關上一扇門。
我需要同樣的人打開一扇門,關閉它或他打開一扇門,打開一個又一個的持續時間(以秒爲單位)。(這當然是允許簡單地打開門的序列)
只是爲了如果人員1打開了一扇門,並且人員2關閉了一扇門,則不應該從查詢中返回行。
我希望它是有效的,但這不是必須的。
我使用的是SQL 2008 Microsoft服務器(SQLEXPRESS)
這裏有一個表的例子:
EventID | PersonID | EventType | EventDate | PreviousDoor | CurrentDoor
1 | 1 | 1 | 12/10/2010 12:00:01.024 | 0 | 23
2 | 1 | 2 | 12/10/2010 12:05:40.758 | 23 | 0
3 | 2 | 1 | 12/10/2010 12:12:05.347 | 0 | 12
4 | 1 | 1 | 12/10/2010 12:50:12.142 | 0 | 23
5 | 2 | 2 | 12/10/2010 13:00:06.468 | 12 | 23
6 | 3 | 1 | 13/10/2010 13:00:06.468 | 0 | 23
事件類型:1(開門),2(閉門)
的結果應該是:
EventID | PersonID | EventType | EventDate | SecondsDifference
1 | 1 | 1 | 12/10/2010 12:00:01.024 | 339
3 | 2 | 1 | 12/10/2010 12:12:05.347 | 2881
我真的可以用你的球員的幫助。
在此先感謝。
我建議打開LEFT JOIN到INNER JOIN(使`p2.EventID IS NOT NULL`冗餘) - OP只希望配對的打開/關閉事件 - 並添加一個'WHERE p1.EventType = 1`條件。 – 2011-12-16 17:31:39
@KevRitchie爲什麼`LEFT JOIN`?和..你需要使用`CurrentDoor`和`PreviousDoor`獲得更好的結果:) – 2011-12-16 17:32:24