zoukankan      html  css  js  c++  java
  • Oracle多行数据合并一行

    --Oracle多行数据合并一行.sql
    --1.
    CREATE TYPE NUMBER_LIST_T AS TABLE OF varchar2(50);     
    --2.   
    CREATE OR REPLACE FUNCTION CONCAT_LIST (
       lst IN number_list_t, separator varchar2
    )
    RETURN VARCHAR2 IS
    ret varchar2(2000);
    BEGIN
    FOR j IN 1..lst.LAST LOOP
    ret := ret || separator || lst(j);
    END LOOP;

    RETURN ret;
    END;
     
    --3.  
    CREATE OR REPLACE FUNCTION getUserRoles (
       userid in varchar2
    )
    RETURN VARCHAR2 IS
    rtl varchar2(2000);
    BEGIN
      SELECT Substr(CONCAT_LIST(LST, ','),2) into rtl from (
        SELECT
        CAST(MULTISET(
        SELECT trim(f_name) AS f_name FROM
           (select u.userid as f_id,r.rolename as f_name from base_role r, base_user_roles u where r.roleid=u.roleid) e
        WHERE e.f_id=m.f_id )
        AS number_list_t) LST
        FROM
           (select u.userid as f_id,r.rolename as f_name from base_role r, base_user_roles u where r.roleid=u.roleid) m
        where m.f_id = userid
        group by m.f_id
      );
      return(rtl);
    END;
    --select u.*, getUserRoles(u.userid) from base_user u

  • 相关阅读:
    FIR滤波器相关解释
    FIR数字信号滤波器
    图像中的插值
    对DDS的深度认识
    嵌入式媒体处理(EMP)中的编码和解码
    FPGA噪声干扰
    视频压缩概述
    ALTERA DDRII IP核使用
    MyEclipse的使用
    Java开发API文档资源
  • 原文地址:https://www.cnblogs.com/keim/p/2212717.html
Copyright © 2011-2022 走看看