如何使用存储在 SQL 数据库中的数字状态来查找设备可用性

How to use digital status stored in SQL database to find out device availability

我有一些数字标记已登录到 InTouch Historian。我想找出该信号保持开启状态的时间(累积)。例如

DateTime                       Status
-------------------------------------
22/11/2016 15:33:00              1
22/11/2016 15:33:40              0
22/11/2016 15:34:25              1
22/11/2016 15:34:56              1
22/11/2016 15:35:30              1
22/11/2016 15:35:57              0
22/11/2016 15:36:42              0
22/11/2016 15:37:18              1
etc

所以问题是如何计算信号高的总持续时间(1)

预期输出:

22/11/2016 15:33:40 - 22/11/2016 15:33:00 = 40s
22/11/2016 15:35:57 - 22/11/2016 15:34:25 = 92s

所以输出应该是132s或者2:12

;WITH StatusOn (LoggedDate)
AS(
SELECT
    th.LoggedDate
from 
    [dbo].[InTouchHistory] th
left join
    [dbo].[InTouchHistory] th2
    ON th2.LoggedDate = (SELECT MAX(LoggedDate) FROM [dbo].[InTouchHistory] 
                        WHERE [LoggedDate] < th.LoggedDate)
WHERE
    ISNULL(th2.Status, 0) = 0
    and th.Status = 1
)
SELECT 
    SUM(DATEDIFF(second, th1.LoggedDate, th2.LoggedDate))
FROM StatusOn th1
INNER JOIN
    [dbo].[InTouchHistory] th2
    ON th2.LoggedDate = (SELECT MIN(LoggedDate) FROM [dbo].[InTouchHistory] 
                        WHERE [LoggedDate] > th1.LoggedDate AND Status = 0)