我有一張表,其中包含移動設備上用戶工作狀態的信息。每當他們的狀態發生變化時,就會創建一個新的行,並在更改之前創建它們的原始狀態,以及他們現在的新狀態。該表是這樣的:SQL計算包含特定值的兩行之間的時間差
ID Date_Time User OriginalStatus NewStatus
---------------------------------------------------------------------------
60713 2017-04-11 12:14:42 Helen Not Started Active
60714 2017-04-11 12:19:20 Monica Active Paused
60715 2017-04-11 12:20:43 Dave Active Paused
60716 2017-04-11 12:32:18 Helen Finished Archived
60717 2017-04-11 12:48:57 Monica Paused Active
60718 2017-04-11 12:52:35 Dave Paused Active
我所試圖做的是計算每個用戶保留在每個日期上的「暫停」狀態的持續時間......他們只允許從「暫停」移回到表示其「暫停」時間結束的「有效」,並且所有其他行可以被忽略,並且從「暫停」返回到「有效」的變化將不會在連續行中。
在上面的例子中,Monica在29分37秒內(12:19:20到12:48:57)一直保持「已暫停」,而Dave已被暫停31分52秒(12: 20:43至12:52:35)。
理想情況下,我想類似的結果:
User Paused_Start_Time Paused_End_Time Paused_Duration
---------------------------------------------------------------------------
Monica 2017-04-11 12:19:20 2017-04-11 12:48:57 00:29:37
Dave 2017-04-11 12:20:43 2017-04-11 12:52:35 00:31:52
我在一個損失如何去工作了這一點,因此所有的幫助感激地接受。我使用的是SQL Server 2012的
特別針對SQL問題,最好提及您正在使用的DBMS版本。 – niksofteng