У меня есть таблица событий со следующими столбцами:
- sequence (int)
- DeviceID (varchar (8))
- time_start (datetime)
- DeviceState (smallint)
- time_end (datetime)
Все столбцы, кроме time_end, заполнены данными (мой текущий столбец time_end равен NULL в таблице).Что мне нужно сделать, это заполнить столбец time_end данными закрытия события.Это на самом деле время, когда произошло новое событие с того же устройства.Вот пример модели данных, как она должна работать в конце:
sequence DeviceID time_start DeviceState time_end
--------------------------------------------------------------------------------------
1 000012A7 2010-10-31 12:00 14 2010-10-31 12:10
2 000012A7 2010-10-31 12:10 18 2010-10-31 12:33
3 000012A8 2010-10-31 12:20 16 2010-10-31 13:01
4 000012A7 2010-10-31 12:33 13 2010-10-31 12:47
5 000012A7 2010-10-31 12:47 18 2010-10-31 13:20
6 000012A8 2010-10-31 13:01 20 2010-10-31 13:23
7 000012A7 2010-10-31 13:20 05 2010-10-31 14:12
8 000012A8 2010-10-31 13:23 32 2010-10-31 14:15
9 000012A7 2010-10-31 14:12 12
10 000012A8 2010-10-31 14:15 35
Идея состоит в том, что для каждой записи в таблице мне нужно выбрать запись в старшей последовательности для конкретного устройства и обновить time_endс данными time_start этой записи более высокого уровня.Благодаря этому я смогу отслеживать период времени каждого события.
Я думал об этом с помощью вызова функции, но у меня есть две основные трудности: 1. Получение данных, например: sequence =2 и обновление time_end sequence = 1 2. создание функции, которая будет делать это непрерывно, когда новые записи добавляются в таблицу
Я совершенно новичок в SQL и совершенно не понимаю, что ещевозможно.Основываясь на моих знаниях, я должен использовать функцию, которая будет ссылаться на данные вместе, но мои нынешние знания ограничивают меня в этом.
Я надеюсь, что кто-то может дать мне некоторое руководство в каком направлении идти и дать мненекоторые отзывы, если я на правильном пути или нет.Любые статьи поддержки будут очень признательны.