Oracle 行列转换函数
oracle 10g wmsys.wm_concat行列转换函数的使用:首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以quot;,qu
Oracle 10g wmsys.wm_concat行列转换函数的使用:
首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行,接下来上例子,看看这个神奇的函数如何应用
1、把结果按分组用逗号分割,,以一行打印出来。(如果需要换其它的可以用replace函数:replace(wm_concat(name),',','|'))
select t.u_id,
wmsys.wm_concat(t.goods),
wmsys.wm_concat(t.goods || '(' || t.u_id || '斤)')
from tb_index t
group by t.u_id;
2、over(partition by t.u_id)用法:
select t.u_id,
wmsys.wm_concat(t.goods || '(' || t.u_id || '斤)') over(partition by t.u_id)
from tb_index t;
3、over(order by t.u_id)用法:
select t.u_id,
wmsys.wm_concat(t.goods || '(' || t.u_id || '斤)') over(partition by t.u_id)
from tb_index t;
4、懒人扩展用法:(大表很多字段我需要串起来)
select 'select '|| wm_concat('t.'||column_name) || ' from TB_INDEX t' from user_tab_columns where table_name='TB_INDEX';
sys_connect_by_path(columnname, seperator) :用来构造树路径的,所以需要和connect by一起来用。
sys_connect_by_path 函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示
select t.areaid,
t.parentareaid,
t.areaname,
sys_connect_by_path(t.areaname, '-') area
from tb_index t
start with t.areaname = '中国'
connect by t.parentareaid = prior t.areaid;
listagg:11gr2还新增了一个分析函数LISTAGG,这个函数的功能实现字符串的连接
create table t (id number, name varchar2(30), type varchar2(20));
insert into t
select rownum, object_name, object_type from dba_objects;
select listagg(name, ',') within group(order by id)
from t
where rownum
select type, listagg(name, ',') within group(order by id) name
from t
where type in ('DIRECTORY', 'JAVA SOURCE', 'SCHEDULE')
group by type;
select name,
listagg(name, ',') within group(order by id) over(partition by type) s_name
from t
where type in ('DIRECTORY', 'JAVA SOURCE', 'SCHEDULE');
更多Oracle相关信息见Oracle 专题页面 ?tid=12
推荐阅读
-
oracle SCN跟TIMESTAMP之间转换
-
Oracle下时间转换在几种语言中的实现
-
Oracle 下医嘱执行函数
-
mysql 时间转换函数的使用方法第1/2页
-
MySQL数据库中CAST与CONVERT函数实现类型转换的讲解
-
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
-
通过创建SQLServer 2005到 Oracle10g 的链接服务器实现异构数据库数据转换方案
-
SQL2005CLR函数扩展-繁简转换的实现代码
-
玩转-SQL2005数据库行列转换
-
每日学习心得:SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析)