免费注册 查看新帖 |

Chinaunix

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

求救:oracle 行列转换 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-27 16:56 |只看该作者 |倒序浏览
a         b
205        202001,204001,206001
302        301001,301002

变成
a         b
205     202001
205     204001
205     206001
302     301001
302     301002

论坛徽章:
0
2 [报告]
发表于 2007-06-27 18:39 |只看该作者
[整理]一行拆分成多行

Oracle数据库中,主表中有一条记录 A B,C,D ,A对应的字段为主键,B,C,D的值是动态的,可能是B,C,D,E,F,G,.....
不使用存储过程和游标,想通过SQL得到这样的结果
A B
A C
A D
请问这怎么实现?


解答:

表c有两列a,b
假设b最多由100个值拼接
下面是拆分语句
select a,substr(b,instr(','||b,',',1,rn),instr(','||b||',',',',1,rn+1)-instr(','||b||',',',',1,rn)-1),rn from c,(select rownum rn from dual connect by rownum<100) where instr(b||',',',',1,rn)>0 order by a,rn
这里的100是一个常量,如果拼接个数较多,可以用更大的数代替。

http://cache.baidu.com/c?word=%D ... 1e5e&user=baidu
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP