我有一个有四列的桌子; ID,timestamp,event_name和changed_to(boolean)。
我需要知道如何才能获得“时间戳”之间的时代。在哪里' changed_to'根据' event_name'从true变为false以e_DrvMotorStartUp为例。
id timestamp event_name changed_to
56682 2015-04-14 09:06:21.93022 e_DrvMotorStartUp t
56683 2015-04-14 09:06:24.928389 e_DrvMotorRun t
56684 2015-04-14 09:06:24.928389 e_DrvMotorStartUp f
感谢。
答案 0 :(得分:0)
您需要的是LATERAL JOIN。
SELECT e.*, e2.*, e."timestamp" - e2."timestamp"
FROM tbl AS e
,LATERAL (SELECT *
FROM tbl
WHERE tbl.event_name = e.event_name
AND e."timestamp" > tbl."timestamp"
AND tbl.changed_to = 't'
ORDER BY tbl."timestamp" DESC
LIMIT 1)
WHERE e.changed_to = 'f'