如果PHONENUMBER是NUMBER形.则.
select min(PHONENUMBER) as start,max(PHONENUMBER) as end
from (
select PHONENUMBER,(PHONENUMBER-row_number()over(order by PHONENUMBER)) rn
from tablename)
group by rn字符形的话用TO_NUMBER转换.

解决方案 »

  1.   

    楼上正解,但start,end是保留字,不能作为别名
      

  2.   

    笨了一点,但是可以实现
    SELECT B.PHONENUMBER STA, C.PHONENUMBER END
    FROM 
    (SELECT A.PHONENUMBER, DENSE_RANK() OVER(ORDER BY A.PHONENUMBER) ID
    FROM TEST A
    WHERE A.PHONENUMBER NOT IN (SELECT TEST.PHONENUMBER + 1 FROM TEST)) B ,
    (SELECT A.PHONENUMBER, DENSE_RANK() OVER(ORDER BY A.PHONENUMBER) ID
    FROM TEST A
    WHERE A.PHONENUMBER NOT IN (SELECT TEST.PHONENUMBER - 1 FROM TEST)) C 
    WHERE B.ID = C.ID
      

  3.   

    关注中!现在也有个跟楼主类似的问题困绕着我,
    有如下的数据
    sdate    encode   count
    -------- -------- ------
    2006-1-1 1001 5
    2006-1-1 1002 11
    2006-1-2 1002 7
    2006-1-2 1003 1
    2006-1-3 1003 5
    2006-1-3 1003 21
    2006-1-4 1001 18
    2006-1-4 1002 10现在想要得到如下形式的数据
    sdate    encode
    -------- -------
    2006-1-2 1001
    2006-1-3 1001
    2006-1-3 1002求SQL语句
    请达人解惑!
      

  4.   

    对于我上面的SQL中的START和END都改为:"START" , "END"
      

  5.   

    可以了
    sbaz(万神渡劫) 是正解,只需要将保留字改一下
    谢谢
    但可以解释下吗?看不明白