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
结果如下图:
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步