У меня есть список записей с AlarmID, System, State и Raised ON.
Одно событие представлено двумя записями с одним и тем же AlarmID, первая с состоянием On, вторая с State Off и соответствующим временем.
Это мой запрос:
SELECT *
FROM [Alarmi_On-Off]
WHERE [Alarmi_On-Off].[Alarm ID] IN (SELECT [Alarmi_On-Off].[Alarm ID]
FROM [Alarmi_On-Off]
GROUP BY [Alarmi_On-Off].[Alarm ID]
HAVING COUNT([Alarmi_On-Off].[Alarm ID]) > 1);
и результат:
+---------+---------+-------+------------------+
| AlarmID | System | State | Raised On |
+---------+---------+-------+------------------+
| 1001 | System1 | On | 16.08.2016 14:23 |
| 1001 | System1 | Off | 16.08.2016 16:17 |
| 1002 | System2 | On | 27.06.2016 12:14 |
| 1002 | System2 | Off | 27.06.2016 12:24 |
| 1002 | System2 | On | 14.07.2016 03:37 |
| 1002 | System2 | Off | 14.07.2016 03:38 |
+---------+---------+-------+------------------+
Я хочу создать запрос, который вычисляет разницу во времени между состояниями «Включено» и «Выключено» для каждой системы, имея в виду, чтобы исключить все системы с менее чем двумя событиями (в приведенном выше примере исключить AlarmID 1001). .."
В этом запросе вместо двух записей у меня была бы одна запись с системой и расчетным временем.
Любая помощь приветствуется.