数据库

 首页 > 数据库 > Oracle > oracle行列转换函数的使用

oracle行列转换函数的使用

分享到:
【字体:
导读:
         摘要:oracle10gwmsys.wm_concat行列转换函数的使用:首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行,接下来上例子,看看这个神奇的函数如何应用1、把结果按分组用逗... SyntaxHig...

oracle行列转换函数的使用

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,  www.2cto.com  
       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;
   www.2cto.com  
 
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 < 10;
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');
 
 
 
作者 runming918
oracle行列转换函数的使用
分享到:
oracle日志文件误删的解决方法
oracle日志文件误删的解决方法 oracle日志文件误删的解决方法   oracle日志文件被删除(主要是那些360安全卫士,QQ电脑管家,金山卫士等之类的软件把日志当作垃圾给清理掉了,当使用他们的时候一定要慎重,或者清理的时候把日志文件这项的复选框去掉)和,导致oracle监听启动不了,是一直都困扰我好久的问题,我每次遇到...
Oracle SQL*PLUS与用户操作相关的常用命...
Oracle SQL*PLUS与用户操作相关的常用命令 Oracle SQL*PLUS与用户操作相关的常用命令   1.增加数据库用户:(user01/pwd) [sql] create user user01       identified by pwd       default tablespace users       Temporary TABLESPACE Temp;     www.2cto.com   2.给用户user01授权: [sql] grant connect,...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……