0

私はこのようなテーブルを持っています:

    day      start        end
2013-01-02  08:00:00    12:00:00
2013-01-02  16:00:00    18:00:00
2013-01-02  23:00:00    03:00:00
2013-01-03  08:00:00    12:00:00
2013-01-03  16:00:00    18:00:00
2013-01-03  23:00:00    03:00:00

私がやりたいのは、これをもたらすテーブルへの選択です:

     day      start        end
2013-01-02  12:00:00    16:00:00
2013-01-02  18:00:00    23:00:00

そのスケジュールでの自由時間を表示しています。何時間も試してみましたが、どうすればいいのかわかりません。助けてください

4

1 に答える 1

0

あなたはその合間にだけ欲しいようです。したがって、次を使用できますlead()

select day, end, nextstart
from (select t.*, lead(start) over (partition by day order by start) as nextstart
      from table t
     ) t
where end <> nextstart;

(注: わかりやすくするために、予約語をエスケープしていません。予約語であるendand daywhich のような名前を列に付けるべきではありません。)

たとえば、0:00 ~ 8:00 が必要な場合、これは少し難しくなります。

于 2014-05-17T17:07:30.430 に答える