oracle行列转换函数的使用-Oracle

Oracle 21NN 5个月前 (06-24) 16次浏览 已收录 0个评论 扫描二维码

oracle 10g wmsys.wm_concat行列转换函数的使用:

首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以”,”号分隔起来,并显示成一行,接下来上例子,看看这个神奇的函数如何应用

oracle行列转换函数的使用-Oracle

 

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;

oracle行列转换函数的使用-Oracle

 

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;

 

oracle行列转换函数的使用-Oracle
 

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;

oracle行列转换函数的使用-Oracle

 

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 函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示 

oracle行列转换函数的使用-Oracle
 

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  
oracle行列转换函数的使用-Oracle

 

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 本文链接:https://www.21nn.cn/shujuku/oracle/40311.html 本站所以图片、文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如有侵权请邮件与我们联系处理。i@ki4.cn
喜欢 (0)
[1353713598@qq.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址