免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1653 | 回复: 3
打印 上一主题 下一主题

求助个存储过程,该怎么写.多谢! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-08 20:48 |只看该作者 |倒序浏览
有一个表,共两个字段,一个省份,一个手机号段,要根据省份对手机号段进行简化,就是按省份最大限度的合并号段,如以下数据:
北京        "        1343630"
北京        "        1343631"
北京        "        1343632"
北京        "        1343633"
北京        "        1343634"
北京        "        1343635"
北京        "        1343636"
北京        "        1343637"
北京        "        1343638"
北京        "        1343639"
北京        "        1343640"
北京        "        1343641"
广东        "        1371100"
广东        "        1371101"
合并后的样例应该是:
北京        "        134363"
北京        "        1343640"
北京        "        1343641"
广东        "        1371100"
广东        "        1371101"
数据大概有10万行吧,想写过存储过程,将合并后的号段转存到另一个表中,数据样例具体请见附件
请教一下该存储过程怎么写最合适?多谢各位大侠! 4.rar (15.01 KB)
下载次数: 0
2008-12-8 19:57

论坛徽章:
0
2 [报告]
发表于 2008-12-09 10:31 |只看该作者
”按省份最大限度的合并号段“这句话和你预想得到的结果不是很明白!是不是可以理解成每个省份号段最小值和最大值的区间?就是合并结果
的样例应该是:
北京        "        1343630"
北京        "        1343641"
广东        "        1371100"
广东        "        1371101"
---如果是只有两个字段用一条sql就可以完成,
select  省份,min(号段) from table1 group by 省份 union all
select 省份,max(号段) from table1 group by 省份 order by  省份

[ 本帖最后由 anton 于 2008-12-9 10:32 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-12-09 15:06 |只看该作者
看看这个帖子,可能对你有帮助:
http://bbs.chinaunix.net/thread-1326639-1-1.html

论坛徽章:
0
4 [报告]
发表于 2008-12-14 21:28 |只看该作者
核心sql语句:
SELECT DISTINCT province,CASE WHEN p=10 THEN SUBSTR(codenum,1,LENGTH(codenum)-1) ELSE codenum END codenum
FROM
(
  SELECT province,codenum,COUNT(*) over (PARTITION BY province,SUBSTR(codenum,1,LENGTH(codenum)-1)) p
    FROM xuhf_nums
)
order by province;

多执行几次,直到数据量不再变化为止
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP