Исправление maxcom, (текущая версия) :
select
log.created_at as on,
(select
case when type='off' then created_at end from log as l2
where l2.created_at>log.created_at
order by created_at limit 1
) as off from log where type='on';
Только оно будет работать если время уникально. Если возможно более одного события ровно в одно время то нужно еще подумать.
И еще я думаю эта конструкция с case и limit скорее всего не понравится оптимизатору. Скорее всего можно придумать решение на агрегатах которое будет быстрее.
Исправление maxcom, :
select
log.created_at as on,
(select
case when type='off' then created_at end from log as l2
where l2.created_at>log.created_at
order by created_at limit 1
) as off from log where type='on';
Только оно будет работать если время уникально. Если возможно более одного события ровно в одно время то нужно еще подумать.
Исходная версия maxcom, :
select log.created_at as on, (select case when type='off' then created_at end from log as l2 where l2.created_at>log.created_at order by created_at limit 1) as off from log where type='on';
Только оно будет работать если время уникально. Если возможно более одного события ровно в одно время то нужно еще подумать.