Запрос на создание журнала ошибок для различных устройств из таблицы, в которой устройства вводят свое состояние с отметкой времени

0

У меня есть таблица, в которой разные устройства регистрируют свой статус с меткой времени, как показано в приведенной ниже таблице. (значение статуса либо "нормально", либо "ошибка"). Примечание. При включении их обновления в таблицу отсутствуют правила. Например, две или три записи с предупреждением могут наступать друг на друга.

Изображение 174551

Я пытаюсь получить SQL-запрос, который может привести к следующему результату. Любая помощь будет оценена по достоинству.

Изображение 174551

  • 0
    Это MySQL или SQL Server ?
  • 0
    спасибо за вопрос, SQL-сервер лучше, но MySQL также в порядке. Я больше после подхода.
Теги:
database
sql-server

1 ответ

0

это классическая проблема островов и разломов. Найдите его, и вы найдете много ссылок на этот

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню