oracle 一行拆分多行
2015-11-26 16:15
447 查看
现遇到问题:
表中的记录为
ID name amount
1 a,b,c 10
转换成为
ID name amount
1 a 10
1 b 10
1 c 10
select * from aa ;
sql:
select id,
nvl(substr(name,instr(name,',',1,lvl)+1,instr(name,',',1,lvl+1)-instr(name,',',1,lvl)-1),' ') name,
amount
from (
select id,
lvl,
',' || name || ',' name,
amount
from aa a,
(select level lvl
from dual
connect by level <=
(select max(length(name) - length(replace(name, ','))) + 1
from aa)) b)
where substr(name,instr(name,',',1,lvl)+1,instr(name,',',1,lvl+1)-instr(name,',',1,lvl)-1) is not null
order by id,name
其中遇到通过 connect by 来构造数据
[b]例如:
SQL> create table test as select level as id,level*10000 as sal from dual connect by level<=5;
表已创建。
SQL> select * from test;
ID SAL
---------- ----------
1 10000
2 20000
3 30000
4 40000
5 50000
[/b]
表中的记录为
ID name amount
1 a,b,c 10
转换成为
ID name amount
1 a 10
1 b 10
1 c 10
select * from aa ;
sql:
select id,
nvl(substr(name,instr(name,',',1,lvl)+1,instr(name,',',1,lvl+1)-instr(name,',',1,lvl)-1),' ') name,
amount
from (
select id,
lvl,
',' || name || ',' name,
amount
from aa a,
(select level lvl
from dual
connect by level <=
(select max(length(name) - length(replace(name, ','))) + 1
from aa)) b)
where substr(name,instr(name,',',1,lvl)+1,instr(name,',',1,lvl+1)-instr(name,',',1,lvl)-1) is not null
order by id,name
其中遇到通过 connect by 来构造数据
[b]例如:
SQL> create table test as select level as id,level*10000 as sal from dual connect by level<=5;
表已创建。
SQL> select * from test;
ID SAL
---------- ----------
1 10000
2 20000
3 30000
4 40000
5 50000
[/b]
相关文章推荐
- Oracle 10g console控制台报错: java.lang.Exception: Exception in sending Request :: null
- java连接Oracle数据库详细代码,jdbc
- oracle function学习1
- 【ojdbc14.jar】由于Oracle驱动ojdbc14.jar导致千万富翁破产之始末
- ORACLE11g:No Dialect mapping for JDBC type: -9,2011解决方案
- SQL SERVER导入数据到ORACLE的方法总结
- mysql和oracle的区别(功能性能、选择、使用它们时的sql等对比)
- 友勤签约中信重工Oracle P6项目管理软件及技术服务项目
- oracle数据库,怎么给已有数据的表添加自增字段
- oracle 定时运行存储调度 schedule job,传递参数 及相关
- CMD命令下访问Oracle数据库
- oracle中出现ORA-01791:不是SELECTed表达式错误
- 【Oracle错误】:ORA-01034&ORA-27101
- oracle创建自增长列
- Oracle管理权限和角色
- 数据库分页语句(mysql,oracle,sqlserver,DB2)
- oracle 数据复制(不同数据库、不同用户,无中转文件) impdp
- Oracle索引
- Oracle序列
- Oracle维护数据完整性——约束