• Oracle自定义行转列函数


    --行转列自定义函数,只针对TABLE1表
    --paramType是参数类型,用于判断,param1和param2是条件参数
    create or replace function My_concat(paramType in integer,param1 in varchar2,param2 in varchar2) return varchar2
    is 
        resultStr varchar2(2000);
    begin 
        if paramType = 1 then 
            --定义游标
            for temp_cursor1 in (select CONTA_ID FROM TABLE1 WHERE FORM_ID=param1 and orderType=param2)
            loop
                resultStr:=resultStr||temp_cursor1.CONTA_ID||',';
            end loop;
        
        elsif paramType = 2 then 
            for temp_cursor2 in (select CONTA_TYPE FROM TABLE1 WHERE FORM_ID=param1 and orderType=param2)
            loop
                resultStr:=resultStr||temp_cursor2.CONTA_TYPE||',';
            end loop;
            
        elsif paramType = 3 then 
            for temp_cursor3 in (select CONTA_WEIGHT FROM TABLE1 WHERE FORM_ID=param1 and orderType=param2)
            loop
                resultStr:=resultStr||temp_cursor3.CONTA_WEIGHT||',';
            end loop;
        
        end if;
        
        resultStr:=rtrim(resultStr,',');
        return resultStr;
        
    end;
    
    
    --执行例子:
    select A.COLUMN1,A.COLUMN2,A.COLUMN3
           My_concat(1,A.COOLUMN1,A.COLUMN2) AS CONTA_IDS,
           My_concat(2,A.COOLUMN1,A.COLUMN2) AS CONTA_TYPES,
           My_concat(3,A.COOLUMN1,A.COLUMN2) AS CONTA_WEIGHTS
    from TABLE1 AS B LEFT JOIN TABLE2 A 
    ON A.COOLUMN1=B.FORM_ID AND A.COLUMN2=B.orderType

    结果如下图:

  • 相关阅读:
    算法笔记--支配树
    51Nod 1187 寻找分数
    ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer
    ACM-ICPC 2018 徐州赛区网络预赛 A. Hard to prepare
    HDU
    HDU
    Codeforces 1011E
    Codeforces 990D
    Codeforces 989C
    Codeforces 932E
  • 原文地址:https://www.cnblogs.com/programsky/p/5581478.html
Copyright © 2020-2023  润新知