我有一个结构表:
id, timestamp, deviceId, datatype, measure
列度量值表示数据类型的值。例如,当处理开始时,数据类型为 19,度量为 1。当处理完成时,数据类型仍为 19,值为 0,并插入具有相同时间戳、数据类型 54 和值作为某个值的新行。这意味着在完成时系统正在调用一些触发器来更新此表。下面的示例数据
1001, 2013-01-02 09:20:00, 501, 19, 1
1005, 2013-01-02 10:00:00, 501, 19, 0
1006, 2013-01-02 10:00:00, 501, 54, 65
1005和1006的时间戳相同,1001的时间戳总是小于1005的
1011, 2013-01-02 09:20:00, 601, 19, 1
1015, 2013-01-02 10:00:00, 601, 19, 0
1016, 2013-01-02 10:00:00, 601, 54, 105
1015和1016的时间戳相同,1011的时间戳总是小于1015的
1021, 2013-01-02 09:20:00, 701, 19, 1
1022, 2013-01-02 10:00:00, 701, 19, 0
1023, 2013-01-02 10:00:00, 701, 54, 81
1022和1023的时间戳相同,1021的时间戳总是小于1022的
同样的过程可以同时发生在多个设备上。
现在的要求是找到每个已完成事务的开始和结束时间,例如
1006, 2013-01-02 09:20:00, 2013-01-02 10:20:00, 501, 65
1016, 2013-01-02 09:20:00, 2013-01-02 10:20:00, 601, 105
1023, 2013-01-02 09:20:00, 2013-01-02 10:20:00, 701, 81
大约 5 年后,我正在编写 SQL 查询并且完全卡住了。任何指针/建议将不胜感激。
提前致谢