• 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');
  • 相关阅读:
    PAT1001
    关于yahoo.com.cn邮箱导入Gmail邮箱验证异常的机制解析及解决办法
    浙大机试感受
    PAT1002
    mysql修改密码后无法登陆问题
    Windows 不能在 本地计算机 启动 OracleDBConsoleorcl
    Deprecated: Function ereg_replace() is deprecated
    PHP中静态方法(static)与非静态方法的使用及区别
    微信小程序开发,weui报“渲染层错误”的解决办法
    Android系统下载管理DownloadManager功能介绍及使用示例
  • 原文地址:https://www.cnblogs.com/Brainpan/p/3927075.html
Copyright © 2020-2023  润新知