Oracle动态sql行转列原创
1人赞赏了该文章
510次浏览
编辑于2021年08月18日 14:43:09
#odata1 为临时表
#data 为报表展示临时表
@InsertItem@ 为插入的列名,例如:F_103444,F_103445,F_103446,F_103447,F_103448,
代码如下:
DECLARE
V_Sql VARCHAR2(8000);CURSOR CURSOR_1 IS select distinct FASSETTYPEGROUPID from #odata1;
BEGIN
V_Sql := 'INSERT INTO #data(FIDENTITYID,FDEPTNAME,@InsertItem@FDEPRSUM)';
V_Sql := V_Sql || 'select ROW_NUMBER() OVER(order by FDEPTNAME) FIDENTITYID,FDEPTNAME FDEPTNAME';
FOR V_XCLCK IN CURSOR_1
LOOP
V_Sql := V_Sql || ' , max(case FASSETTYPEGROUPID when ''' || V_XCLCK.FASSETTYPEGROUPID || ''' then FDRFUND else 0 end) [F_' || V_XCLCK.FASSETTYPEGROUPID || ']';
END LOOP;
V_Sql := V_Sql || ' , sum(FDRFUND) FDEPRSUM from #odata1 group by FDEPTNAME';
EXECUTE IMMEDIATE V_Sql;
--dbms_output.put_line(V_Sql);END;
赞 1
1人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读