151901000000 1
151901000001 1
151901000002 1
151901000003 1 我的数据结构是这样的,现想用SQL语句实现将数据过滤成如下格式:
151901000004 1 151901000000-151901000004 1
151901000005 3 151901000005-151901000006 3
151901000006 3 151901000007-151901000008 1
151901000007 1 151901000009-151901000018 3
151901000008 1 151901000019-151901000019 2
151901000009 3 151901000020-151901000020 3
151901000010 3 151901000021-151901000021 2
151901000011 3 151901000022-151901000030 3
151901000012 3
151901000013 3
151901000014 3
151901000015 3
151901000016 3
151901000017 3
151901000018 3
151901000019 2
151901000020 3
151901000021 2
151901000022 3
151901000023 3
151901000024 3
151901000025 3
151901000026 3
151901000027 3
151901000028 3
151901000029 3
151901000030 3

解决方案 »

  1.   

    看看这个,http://community.csdn.net/Expert/topic/4203/4203059.xml?temp=6.589907E-02,现在语句还没有优化,太复杂
    把min-xh和max-xh拼起来就是你要的结果
      

  2.   

    和刚刚那个帖子好像类似,下面的改改应该 可以了SQL> select * from a;       ID1 ID2
    ---------- ----------
             1 aaa
             2 aaa
             3 aaa
             4 bbb
             5 bbb
             6 bbb
             7 aaa
             8 aaa
             9 aaa
            10 ccc
            11 ccc
            12 bbb
            13 bbbSQL> select min(id1) || '-' || max(id1) id,id2
      2  from (select * from a order by id2,id1)
      3  group by id2,rownum - id1
      4  order by max_id
      5  /ID                                ID2
    -------------------------------------
    1-3                               aaa
    10-11                             ccc
    12-13                             bbb
    4-6                               bbb
    7-9                               aaa