【发布时间】:2017-01-08 04:10:08
【问题描述】:
我有一个记录列表,其中包含 AlarmID、System、State 和 Raised ON。
一个事件由两条记录表示,相同的AlarmID,第一个状态为开启,第二个状态为关闭,对应的时间。
这是我的查询:
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 |
+---------+---------+-------+------------------+
我想创建一个查询来计算每个系统的开启和关闭状态之间的时间差,记住要排除所有事件少于 2 个的系统(在上面的示例中,排除 AlarmID 1001),我尝试使用“有 COUNT..”
在该查询中,我将有一条记录,而不是两条记录,其中包含系统和计算时间。
感谢任何帮助。
【问题讨论】:
标签: sql vba ms-access time calc