zoukankan      html  css  js  c++  java
  • 行列转换:使用聚合函数、sys_connect_by_path、wm_concat

    ①聚合函数,当然也可以用自定义函数实现,主要是利用了GROUP BY和聚合函数分组。

    修改前:

    select distinct sn.s_num, con1.flag con_flag, con1.id con_id, con1.name con_name, con1.mobile con_mobile, con2.flag con2_flag, con2.id con2_id, con2.name con2_name, con2.mobile con2_mobile, s.id s_id, s.name stu_name 

    from table_snumber sn, table_c con1, table_c con2, table_s s 

    where sn.stu_id(+)=s.id 

    and con2.r_no(+)=2 

    and con2.s_id(+)=s.id 

    and con1.r_no(+)=1 

    and con1.s_id(+)=s.id 

    and s.u_id=:1 
    order by sn.s_num, s.name

    修改后:

    SELECT SN.S_NUM,
    MAX(DECODE(C.R_NO,1,C.FLAG,NULL)),
    MAX(DECODE(C.R_NO,1,C.ID,NULL)),
    MAX(DECODE(C.R_NO,1,C.NAME,NULL)),
    MAX(DECODE(C.R_NO,1,C.MOBILE,NULL)),
    MAX(DECODE(C.R_NO,2,C.FLAG,NULL)),
    MAX(DECODE(C.R_NO,2,C.ID,NULL)),
    MAX(DECODE(C.R_NO,2,C.NAME,NULL)),
    MAX(DECODE(C.R_NO,2,C.MOBILE,NULL)),S.ID S_ID,S.NAME STU_NAME 
    FROM STU_NUMBER SN, CONNECTOR C, STUDENT S 
    WHERE SN.S_ID(+)=S.ID 
    AND C.S_ID(+)=S.ID 
    AND S.UNIT_ID=665543--:1
    GROUP BY SN.S_NUM,S.ID,S.NAME 
    ORDER BY SN.S_NUM, S.NAME 

    -----少关联了TABLE_C和少了一个distinct。

    ②使用wm_sys.wm_concat

    select *
    from dba_source d
    where d.type='FUNCTION'
    and d.name='WM_CONCAT'

    -----已经加密过 那么怎么用?咕狗或者用PL/SQL看一下。

    select wmsys.wm_concat(c.MOBILE),wmsys.wm_concat(c.NAME),wmsys.wm_concat(c.id)
    from TABLE_C C
    where c.U_ID=665543
    group by c.S_ID(还有个order by选项)

    -------输出格式为

    13500000000,1590000000  张之夏,庄之俊  5941820,5941821

    与要求格式不太相符 也是可以处理的 还是选择聚合函数

    ③使用sys_connect_by_path

      不再测试。

    详见:

    http://www.ningoo.net/html/2008/how_to_do_string_aggregate_on_oracle.html






  • 相关阅读:
    [LeetCode] Search a 2D Matrix
    CCBPM中的消息机制,CCIM服务端安装说明
    程序基石系列之C++多态的前提条件
    汇编中常见的一些错误信息
    浏览器的CSS Hacks
    易学设计模式看书笔记(7)
    [易飞]简易制程日报-月报
    js thiskeyword
    时空-问题集锦(转载)
    Delphi 组件渐进开发浅谈(二)——双简合璧
  • 原文地址:https://www.cnblogs.com/gracejiang/p/5890436.html
Copyright © 2011-2022 走看看