Oracle [sys_connect_by_path] 函数
2014-11-04 17:24
323 查看
create table test
(
NO NUMBER,
VALUE VARCHAR2(100),
NAME VARCHAR2(100)
);
--------------------------------------
insert into test
select * from
(
select '1','a','测试1' from dual union all
select '1','b','测试2' from dual union all
select '1','c','测试3' from dual union all
select '1','d','测试4' from dual union all
select '2','e','测试5' from dual union all
select '4','f','测试6' from dual union all
select '4','g','测试7' from dual
);
--------------------------------------
select No,
ltrim(max(sys_connect_by_path(Value, ';')), ';') as Value,
ltrim(max(sys_connect_by_path(Name, ';')), ';') as Name
from (
select No,
Value,
Name,
rnFirst,
lead(rnFirst) over(partition by No order by rnFirst) rnNext
from (select a.No,
a.Value,
a.Name,
row_number() over(order by a.No, a.Value desc) rnFirst
from Test a) tmpTable1
) tmpTable2
start with rnNext is null
connect by rnNext = prior rnFirst
group by No;
--------------------------------------
select No,
ltrim(max(sys_connect_by_path(Value, ';')), ';') as Value,
ltrim(max(sys_connect_by_path(Name, ';')), ';') as Name
from (
select No,
Value,
Name,
rnFirst,
lead(rnFirst) over(order by rnFirst) rnNext
from (select a.No,
a.Value,
a.Name,
row_number() over(order by a.No, a.Value desc) rnFirst
from Test a) tmpTable1
) tmpTable2
start with rnNext is null
connect by rnNext = prior rnFirst
group by No;
-----------------------------------------
-----------------------------------------
把C_MAIL表中的所有列名串起来:
select max(substr(sys_connect_by_path(column_name,','),2))
from (select column_name,rownum rn from user_tab_columns where table_name ='C_MAIL')
start with rn=1 connect by rn=rownum ;
select sys_connect_by_path(column_name,',')
from (select column_name,rownum rn from user_tab_columns where table_name ='C_MAIL')
start with rn=1 connect by rn=rownum ;
(
NO NUMBER,
VALUE VARCHAR2(100),
NAME VARCHAR2(100)
);
--------------------------------------
insert into test
select * from
(
select '1','a','测试1' from dual union all
select '1','b','测试2' from dual union all
select '1','c','测试3' from dual union all
select '1','d','测试4' from dual union all
select '2','e','测试5' from dual union all
select '4','f','测试6' from dual union all
select '4','g','测试7' from dual
);
--------------------------------------
select No,
ltrim(max(sys_connect_by_path(Value, ';')), ';') as Value,
ltrim(max(sys_connect_by_path(Name, ';')), ';') as Name
from (
select No,
Value,
Name,
rnFirst,
lead(rnFirst) over(partition by No order by rnFirst) rnNext
from (select a.No,
a.Value,
a.Name,
row_number() over(order by a.No, a.Value desc) rnFirst
from Test a) tmpTable1
) tmpTable2
start with rnNext is null
connect by rnNext = prior rnFirst
group by No;
--------------------------------------
select No,
ltrim(max(sys_connect_by_path(Value, ';')), ';') as Value,
ltrim(max(sys_connect_by_path(Name, ';')), ';') as Name
from (
select No,
Value,
Name,
rnFirst,
lead(rnFirst) over(order by rnFirst) rnNext
from (select a.No,
a.Value,
a.Name,
row_number() over(order by a.No, a.Value desc) rnFirst
from Test a) tmpTable1
) tmpTable2
start with rnNext is null
connect by rnNext = prior rnFirst
group by No;
-----------------------------------------
-----------------------------------------
把C_MAIL表中的所有列名串起来:
select max(substr(sys_connect_by_path(column_name,','),2))
from (select column_name,rownum rn from user_tab_columns where table_name ='C_MAIL')
start with rn=1 connect by rn=rownum ;
select sys_connect_by_path(column_name,',')
from (select column_name,rownum rn from user_tab_columns where table_name ='C_MAIL')
start with rn=1 connect by rn=rownum ;
相关文章推荐
- ORACLE 中SYS_CONNECT_BY_PATH 函数
- Oracle: wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- oracle sys_connect_by_path 函数
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- ORACLE函数sys_connect_by_path
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- SYS_CONNECT_BY_PATH函数用法 ORACLE
- SYS_CONNECT_BY_PATH 函数用法 ORACLE
- Oracle 树形SQL语句,SYS_CONNECT_BY_PATH 函数
- SYS_CONNECT_BY_PATH函数用法 ORACLE
- ORACLE 中SYS_CONNECT_BY_PATH 函数
- Oracle 树形SQL语句,SYS_CONNECT_BY_PATH 函数
- oracle sys_connect_by_path 函数
- oracle sys_connect_by_path 函数 结果集连接
- Oracle: wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- Oracle之 SYS_CONNECT_BY_PATH 函数笔记
- Oracle: wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- SYS_CONNECT_BY_PATH函数用法 ORACLE
- Oracle中sys_connect_by_path函数用法
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行