zoukankan      html  css  js  c++  java
  • 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

    结果如下图:

  • 相关阅读:
    byvoid
    soa文章摘抄
    也谈设计模式,架构,框架和类库的区别
    GoF设计模式三作者15年后再谈模式
    陈梓涵:我们为什么要学习设计模式
    陈梓涵:关于编程的胡扯
    hung task机制
    iscsi target tgt架构
    iscsi target IET架构
    ISCSI工作流程target和initiator
  • 原文地址:https://www.cnblogs.com/programsky/p/5581478.html
Copyright © 2011-2022 走看看