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