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