表的数据:
id         data
-------------------
1           100
1           101
1           102
...
1           110       
1           200
1           201
...
1           210ID的除了1以外还有2,3等,很多.我想得到的结果是
id       start          end
-------------------------------
1         100           110
1         201           210
...就是说把连续的一段给取出来,作为一条记录

解决方案 »

  1.   

    如果同一id的data不重复,可以这样写
    select id, min_data, max_data
        from (select id, data-r data_r, min(data) min_data, max(data) max_data
                  from (select id, data, rank() over(partition by id order by data) r from T)
                  group by id, data-r)
        order by 1,2;