GajendraD Ответов: 1

Как получить время длительность события start и stop в SQL


ПРИВЕТ,

У меня есть таблица базы данных, которая имеет столбец -
[EventTimeStamp],                [Message],                   [Active]
2019-04-10 10:05:36.0374141	FLAVOR DRUM 2 TRIP ALARM	0
2019-04-10 10:05:38.0425288	FLAVOR SCREW 3 TRIP ALARM	0
2019-04-10 10:08:24.4010440	FRYER SUBMERG TRIP ALARM	1
2019-04-10 10:08:26.2111475	FRYER TAKEOUT TRIP ALARM	1
2019-04-10 10:09:02.2432084	EMERGENCY STOP ALARM	        1
2019-04-10 10:09:02.2432084	SCREW CONV TRIP ALARM	        1
2019-04-10 10:09:04.2133211	CIRCULATION PUMP TRIP ALARM	1
2019-04-10 10:09:04.2133211	HOODLIFTING TRIP ALARM	        1
2019-04-10 10:09:04.2133211	VOLTAGE UNBALANCE ALARM	        1
2019-04-10 10:09:06.2164357	CIRCULATION PUMP TRIP ALARM	0
2019-04-10 10:09:57.5903741	CROSS CONV TRIP ALARM	        0
2019-04-10 10:09:57.5903741	DEOILING CONV TRIP ALARM	0
2019-04-10 10:09:57.5903741	FILTER DRUM TRIP ALARM	        0
2019-04-10 10:09:57.5913742	FILTER REEL TRIP ALARM	        0  
2019-04-10 10:09:57.5913742	FLAVOR AUGER 1 TRIP ALARM	0
2019-04-10 10:09:57.5913742	FLAVOR AUGER 2 TRIP ALARM	0
2019-04-10 10:09:57.5913742	FLAVOR AUGER 3 TRIP ALARM	0
2019-04-10 10:09:57.5923742	FLAVOR DRUM 2 TRIP ALARM	0
2019-04-10 10:09:57.5923742	FLAVOR DRUM 4 TRIP ALARM	0
2019-04-10 10:09:57.5923742	FLAVOR SCREW 1 TRIP ALARM	0
2019-04-10 10:09:57.5933743	FLAVOR SCREW 2 TRIP ALARM	0
2019-04-10 10:09:57.5933743	FLAVOR SCREW 3 TRIP ALARM	0
2019-04-10 10:09:57.5933743	FLAVOR SCREW 4 TRIP ALARM	0
2019-04-10 10:09:57.5933743	SHAKER TRIP ALARM	        0
2019-04-10 10:10:08.2569842	BLOWER TRIP ALARM	        0
2019-04-10 10:10:08.2569842	CIRCULATION PUMP TRIP ALARM	0
2019-04-10 10:10:08.2569842	EMERGENCY STOP ALARM	        1
2019-04-10 10:10:08.2569842	FRYER SUBMERG TRIP ALARM	1
2019-04-10 10:10:08.2579843	FRYER TAKEOUT TRIP ALARM	1
2019-04-10 10:10:08.2579843	HOODLIFTING TRIP ALARM	        1
2019-04-10 10:10:08.2579843	PART CONVEYOR 1 TRIP ALARM	0
2019-04-10 10:10:08.2579843	PART CONVEYOR 2 TRIP ALARM	0
2019-04-10 10:10:08.2579843	PART CONVEYOR 5 TRIP ALARM	0
2019-04-10 10:10:08.2579843	SCREW CONV TRIP ALARM	        1
2019-04-10 10:10:08.2579843	TRANSFER PUMP TRIP ALARM	0
2019-04-10 10:10:08.2589843	VIBRATOR 1 TRIP ALARM	        0
2019-04-10 10:10:08.2589843	VIBRATOR 2 TRIP ALARM	        0
2019-04-10 10:10:08.2589843	VOLTAGE UNBALANCE ALARM	        1
2019-04-10 10:10:11.2121532	PART CONVEYOR 3 TRIP ALARM	0
2019-04-10 10:10:11.2121532	PART CONVEYOR 4 TRIP ALARM	0
2019-04-10 10:10:11.2131533	PART CONVEYOR 6 TRIP ALARM	0
2019-04-10 10:10:11.2131533	REVERSIBLE FEED CONV 1 REV TRIP ALARM	0
2019-04-10 10:10:11.2141533	REVERSIBLE FEED CONV 2 REV TRIP ALARM	0
2019-04-10 10:10:11.2141533	REVERSIBLE FEED CONV 3 REV TRIP ALARM	0
2019-04-10 10:10:11.2141533	REVERSIBLE FEED CONV 4 REV TRIP ALARM	0
2019-04-10 10:10:11.2151534	SPARE FEEDER TRIP ALARM	        0
2019-04-10 10:10:15.2963868	HOODLIFTING DOWN LS 2 ALARM	0
2019-04-10 10:10:15.2963868	HOODLIFTING UP LS 1 ALARM	0
2019-04-10 10:10:15.2963868	OIL LEVEL LOW ALARM	        0
2019-04-10 10:10:15.2973869	REVERSIBLE FEED CONV 5 REV TRIP ALARM	0
2019-04-10 10:10:15.2973869	REVERSIBLE FEED CONV 6 REV TRIP ALARM	0
2019-04-10 10:10:15.2973869	REVERSIBLE FEED CONV 7 REV TRIP ALARM	0
2019-04-10 10:10:15.2973869	REVERSIBLE FEED CONV 8 REV TRIP ALARM	0
2019-04-10 10:10:15.2973869	REVERSIBLE FEED CONV 9 REV TRIP ALARM	0
2019-04-10 10:10:32.1793525	ELEVATOR TRIP ALARM	        0
2019-04-10 10:10:32.1793525	FLAVOR AUGER 4 TRIP ALARM	0
2019-04-10 10:10:32.1793525	FLAVOR DRUM 1 TRIP ALARM	0
2019-04-10 10:10:32.1813526	FLAVOR DRUM 3 TRIP ALARM	0
2019-04-10 10:10:32.1813526	FRYER INLET TEMP LOW ALARM	0
2019-04-10 10:10:32.1813526	REVERSIBLE FEED CONV 10 REV TRIP ALARM	0


Где время события-это время, сообщение-это событие, а 0 и 1 показывают условия включения или выключения сообщения

я должен сделать эту таблицу в следующем формате

MESSAGE      EVENT IN TIME                  EVENT OUT TIME       DURATION



Пожалуйста, помогите решить эту проблему

Что я уже пробовал:

я сделал две отдельные таблицы как для события INTIME, так и для события OUTTIME и присоединился к ним с помощью столбца message. но там, где события on доступны, а outtime недоступен, он повторяет значение.

CHill60

Если у вас нет двух столов, это не поможет. Во-первых, как создаются записи в вашей таблице? Является ли это "опросом", то есть текущее состояние тревоги проверяется на регулярной основе. Или это "срабатывает", то есть запись должна записываться всякий раз, когда изменяется активный статус?
Таблица, которую вы представили в качестве примера, не соответствует ни одному из этих описаний и кажется совершенно случайной.
Кроме того, можем ли мы сделать какие - либо предположения для данных вне диапазона - например, можем ли мы предположить, что начальное состояние любого сигнала тревоги "выключено" или оно должно быть противоположно первому записанному состоянию?
После того, как мы установили, как заполняется таблица, мы можем дать рекомендации по методам определения продолжительности.

Gerry Schmitz

Что вы хотите, чтобы произошло, когда нет OUTTIME для INTIME?

1 Ответов

Рейтинг:
0

Christian Graus

Вы хотите, чтобы в следующий раз было время выхода?

https://blog.sqlauthority.com/2013/09/22/sql-server-how-to-access-the-previous-row-and-next-row-value-in-select-statement/[^]

Если вы заказываете по времени, вы можете запросить значения из следующей строки