oracle 行转列
2013-09-27 11:20
141 查看
1、wm_concat 返回是一个CLOB 类型,不过在经我使用,这货在性能上有问题。
select to_char(wm_concat(t.ename)), t.deptno from scott.emp t group by t.deptno;
2、sys_connect_by_path 加 over PARTITION BY 虽然用起来有点麻烦,但是确实很快。
select t1.deptno, substr(max(sys_connect_by_path(t1.ename, ',')), 2) enames
from (select t.deptno,
t.ename,
row_number() over(PARTITION BY t.deptno order by t.deptno) rn
from scott.emp t) t1
START WITH t1.rn = 1
CONNECT BY t1.deptno = PRIOR t1.deptno
AND t1.rn - 1 = PRIOR t1.rn
GROUP BY t1.deptno;
select to_char(wm_concat(t.ename)), t.deptno from scott.emp t group by t.deptno;
CLARK,MILLER,KING | 10 |
SMITH,FORD,ADAMS,SCOTT,JONES | 20 |
ALLEN,JAMES,TURNER,BLAKE,MARTIN,WARD | 30 |
select t1.deptno, substr(max(sys_connect_by_path(t1.ename, ',')), 2) enames
from (select t.deptno,
t.ename,
row_number() over(PARTITION BY t.deptno order by t.deptno) rn
from scott.emp t) t1
START WITH t1.rn = 1
CONNECT BY t1.deptno = PRIOR t1.deptno
AND t1.rn - 1 = PRIOR t1.rn
GROUP BY t1.deptno;
30 | WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN |
20 | JONES,FORD,ADAMS,SMITH,SCOTT |
10 | CLARK,KING,MILLER |
相关文章推荐
- Oracle Exp/Imp 命令
- 怎样成长为一个真正的Oracle DBA
- Oracle入侵常用操作命令整理
- Oracle与SQLServer选型时不得不说的三个小差异
- ORACLE学习之路--使用LOGMNR查看数据库日志。
- oracle索引
- ADO.NET_第八篇_OracleCommand_执行多个SQL语句02
- 《Mastering Oracle SQL》学习笔记-序
- oracle 主键修改和索引之间的关系
- Oracle ID自增长
- Oracle Database Link基础
- Oracle 10G 新特性——RMAN
- Oracle SQL 内置函数大全
- oracle 中Innvl函数
- ORA-04063和ORA-06508两个Oracle程序错误的一个解决办法
- Oracle中的一些通用查询语句
- Oracle SQL性能优化实例(2)
- Oracle 归档与非归档的切换
- Oracle技术之处于热备份模式下shutdown abort之后db的恢复
- oracle 子查询解嵌套和谓词推入(sqlsubquery unnest and pre_push)