LINUX.ORG.RU

История изменений

Исправление 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';

Только оно будет работать если время уникально. Если возможно более одного события ровно в одно время то нужно еще подумать.