从一个表中为不同的设备生成故障日志,在该表中设备用时间戳输入它们的状态

wljmcqd8  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(239)

我有一个表格,不同的设备用时间戳记录它们的状态,如下表所示(状态值为“ok”或“fault”)注意:在表中插入状态更新时没有规则。例如,两个或三个带有警报的记录可能紧跟其后。

我试图得到一个sql查询,它可以产生以下结果。任何帮助都将不胜感激。

krcsximq

krcsximq1#

这是一个典型的孤岛和缺口问题。搜索一下,你会发现很多关于这个的参考资料

select  DeviceID, 
    [Fault Start]   = min(DateTime),
    [Fault End]     = max(DateTime),
    [Total Fault Time] = convert(varchar(8), 
                                 dateadd(second, 
                                         datediff(second, 
                                                  min(DateTime), 
                                                  max(DateTime)), 
                                         0), 
                                 108),
    [Message]   = max(Message)
from
(
    select  *,
        grp = ID - row_number() over (order by Status, ID)
    from    your_log_table
) d
where   Status  = 'Fault'
group by DeviceID, grp

相关问题