1

我有一些这样的数据

[On]  [Time]
  1    157
  1    158
  0    159*
  1    170*
  1    171
  0    192*
  0    231
  1    294*
  1    295
 ...   ...

我想选择有 * 所以从第一个 0 到下一个 1 的时间

输出应该看起来像

[Time1]  [Time2]
  159      170
  192      294
  ...      ...

任何建议都会很棒!

4

1 回答 1

2

这个相当棘手的自连接做到了 - SQLFiddle Demo

SELECT min(t1) t1, t2
FROM (
    SELECT s1.time t1, min(s2.time) t2
    FROM mytable s1
    JOIN mytable s2
      ON s1.on   < s2.on
     AND s1.time < s2.time
    GROUP BY s1.time
) x
GROUP BY t2
于 2013-03-15T05:32:15.720 回答