行转列、列转行(sys_connect_by_path,row_number() over,count(*) over),wmsys.wm_concat
来源:互联网 发布:区姓和欧姓 知乎 编辑:程序博客网 时间:2024/04/30 20:58
SYS_CONNECT_BY_PATH这个函数是oracle9i才新提出来的!
它一定要和connect by子句合用!
第一个参数是形成树形式的字段,第二个参数是父级和其子级分隔显示用的分隔符!
START WITH 代表你要开始遍历的的节点
它一定要和connect by子句合用!
第一个参数是形成树形式的字段,第二个参数是父级和其子级分隔显示用的分隔符!
START WITH 代表你要开始遍历的的节点
CONNECT BY PRIOR 是标示父子关系的对应
select deptno, ltrim(sys_connect_by_path(ename,','),',') emps from ( select deptno, ename, row_number() over (partition by deptno order by empno) rn, count(*) over (partition by deptno) cnt from emp ) where level = cnt start with rn = 1 connect by prior deptno = deptno and prior rn = rn-1;
DEPTNO EMPS---------------------------------------------- 10 CLARK,KING,MILLER 20 SMITH,JONES,SCOTT,ADAMS,FORD 30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES
SQL> select deptno,wmsys.wm_concat(ename) from emp group by deptno; DEPTNO WMSYS.WM_CONCAT(ENAME)---------- -------------------------------------------------------------------------------- 10 CLARK,MILLER,KING 20 SMITH,FORD,ADAMS,SCOTT,JONES 30 ALLEN,JAMES,TURNER,BLAKE,MARTIN,WARD
select deptno, ename, row_number() over (partition by deptno order by empno) rn, count(*) over (partition by deptno) cnt from emp; DEPTNO ENAME RN CNT---------- ---------- ---------- ---------- 10 CLARK 1 3 10 KING 2 3 10 MILLER 3 3 20 SMITH 1 5 20 JONES 2 5 20 SCOTT 3 5 20 ADAMS 4 5 20 FORD 5 5 30 ALLEN 1 6 30 WARD 2 6 30 MARTIN 3 6 30 BLAKE 4 6 30 TURNER 5 6 30 JAMES 6 6
SQL> select ','||'7654,7698,7782,7788'||',' emps from dual;EMPS---------------------,7654,7698,7782,7788,
select substr(emps,instr(emps,',',1,iter.pos)+1,4) from (select ','||'7654,7698,7782,7788'||',' emps from dual) csv, (select rownum pos from emp) iter where iter.pos <= ((length(csv.emps)-length(replace(csv.emps,',')))/length(','))-1;SUBSTR(E--------7654769877827788
select substr(emps, instr(emps, ',', 1, 1) + 1, 4), substr(emps, instr(emps, ',', 1, 2) + 1, 4), substr(emps, instr(emps, ',', 1, 3) + 1, 4), substr(emps, instr(emps, ',', 1, 4) + 1, 4) from (select ',' || '7654,7698,7782,7788' || ',' emps from dual) csv;SUBS SUBS SUBS SUBS---- ---- ---- ----7654 7698 7782 7788
- 行转列、列转行(sys_connect_by_path,row_number() over,count(*) over),wmsys.wm_concat
- oracle 列转行函数 WMSYS.WM_CONCAT 排序不规则处理
- oracle 列转行函数 WMSYS.WM_CONCAT 排序不规则处理
- ROW_NUMBER() OVER ,ROWNUM , OVER()
- row_number() over(order by) 与count(1)
- ROW_NUMBER OVER()
- ROW_NUMBER() OVER()
- ROW_NUMBER() OVER
- row_number() OVER
- row_number() over()
- ROW_NUMBER() over
- row_number() OVER(
- ROW_NUMBER() OVER()
- Oracle数据库row_number() over统计前15名企业, wm_concat(case when then)行转列
- rank() over和row_number() over
- 函数专题:sum、row_number、count、rank\dense_rank over
- Oracle wm_concat 列转行
- row_number() over()过滤去重
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- 存储过程中执行动态Sql语句
- iOS的影片播放MediaPlayer 和avplayer的简单用法
- vim显示行号、语法高亮、自动缩进的设置
- 关于在Myeclipse下,tomcat重启自动进入debug模式的解决方案
- 行转列、列转行(sys_connect_by_path,row_number() over,count(*) over),wmsys.wm_concat
- C#读取资源文件Resource.resx
- InstallShield 12 制作安装包
- MFC-单文档和多文档程序窗口标题设定
- ITU-T-REC-G.1080-IPTV的体验质量(QoE)要求(六)
- 在CentOS 6.4安装Qt5.0.1
- 怎样判断浏览器的类型
- 深入研究Asp.net页面的生命周期 [引用]
- makefile / Android.mk中添加打印信息