posts - 60, comments - 116, trackbacks - 1, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

ORACLE SQL: 查询连续号码段并合并的方法

Posted on 2007-09-06 10:24 匪客 阅读(2242) 评论(1)  编辑  收藏 所属分类: 数据库

有一个表phonearea,结构如下:

province   prefix
2014       00000001
2014       00000002
2014       00000003
2014       00000004
2014       00000005
2014       00000007
2014       00000008
2014       00000009
2013       00000120
2013       00000121
2013       00000122
2013       00000124
2013       00000125

第一个字段是省份代码,第二个字段是分配的不同的手机号码段的前缀,第二个字段内可能是连续的数据,可能存在断点。

怎样能根据省份分组,把相同省份的连续的号码段合并起来,结果就像下面的这样:

2014,00000001,00000005
2014,00000009,00000007
2013,00000120,00000122
2013,00000124,00000125

在网上查找到了解决方法:

SELECT b.province, MIN (b.prefix) Start_HM, MAX (b.prefix) End_HM
  FROM
    (SELECT a.*, TO_NUMBER(a.prefix - ROWNUM) cc FROM (SELECT * FROM phonearea t ORDER BY province, prefix) a) b
  GROUP BY b.province, b.cc


评论

# re: ORACLE SQL: 查询连续号码段并合并的方法  回复  更多评论   

2014-12-30 14:12 by 孔桂花
求方法

只有注册用户登录后才能发表评论。


网站导航: