如数据库表中有号码记录是1、2、3、5、6、8、9这样单行存储,怎样写SQL让它变成1-3一行,5-6一行,8-9一行显示,就是有连续的就让它们的最小号和最大号组成一个号段行显示。急~~~~~!!! 请指教!

解决方案 »

  1.   

    SELECT MIN(num) || '-' || MAX(num) num
      FROM (SELECT num FROM t ORDER BY num)
     GROUP BY num - rownum
      

  2.   

    http://community.csdn.net/Expert/topic/5195/5195793.xml?temp=.1585962
    http://community.csdn.net/Expert/topic/5199/5199595.xml?temp=.5568506
      

  3.   


    SELECT MIN(num) || '-' || MAX(num) num
      FROM (SELECT num FROM t ORDER BY num)
     GROUP BY num - rownum正解,使用'-'组合
      

  4.   

    已经OK了,谢谢!!但因表里的数据量一个分区就有几千万条,而且NUM索引用不上效率较低。