我有一份显示冷藏集装箱事件的报告。只有 3 种事件:REEFER_SETTINGS RECORDED 记录温度和 UNIT_POWER_CONNECT/DISCONNECT 不记录。当容器同时连接/断开电源时,会发生两个单独的事件:连接(或 d/c)和温度读数:
客户希望删除这些冗余,而不是这两个事件同时具有一个(连接或断开)和记录的温度:
UNIT_POWER_CONNECT 21/12/2013 10:11 -15
REEFER_SETTINGS_RECORDED 21/12/2013 12:30 -17
UNIT_POWER_DISCONNECT 21/12/2013 18:30 -16
我尝试通过记录时间(按分钟)创建分组,但实际上它正在消除冗余,但事件是半随机选择的——临时选择或连接/直流——在后者的情况下,仍然没有记录温度。有任何想法吗?我宁愿避免在 SQL 查询中进行联合(这可能可以解决这个问题),因为其中已经有联合,这会使事情变得非常复杂。我尝试过使用 NEXT 和 PREVIOUS 水晶函数,但运气不佳。
编辑:关于 SQL 部分的注意事项:对于查询的这一部分,有三个重要的表:存储温度的 Reefer_records、存储各种事件的 service_events(包括温度记录但不包括温度本身)和存储物理信息的 inv_unit容器。前两个表与 inv_unit 处于多对一关系,当温度记录或连接事件发生时,数据将记录到两个表中 - service_events 中的事件类型和冷藏记录中的温度。我在巨大快捷方式中的 SQL 查询如下所示:
SELECT inv_unit.id,
reefer_records.Temp_recorded
reefer_records.Time_recorded
'' as event_type
FROM inv_unit INNER JOIN reefer_records on....
UNION ALL
SELECT inv_unit.id
'' as temp_recorded
srv_events.time_recorded
srv_events.event_type
FROM inv_unit INNER JOIN srv_events on...
完整查询在这里