java找最长连续号段_ORACLE SQL: 查询连续号码段并合并的方法

有一个表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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值