本存储过程成功实现行列转换统计
工资数据是竖表,即一个员工的工资对应多条工资栏目的记录
create or replace procedure prc_rs_gzndbb( p_table in varchar2) is
/*===================================================================================================
名称:prc_rs_gzndbb(procedure)
参数:传入:p_table varchar2
调用:PRC_YD_SHTZTJYH 返回:
功能:统计员工工资发放年度报表
返回:把统计结果插入p_table表中
作者:
编写时间:2005-2-21
修改人:
修改内容:
修改时间:
=====================================================================================================*/
v_lmmc varchar2(20);--栏目名称
v_sql varchar2(1000);
--定义取工资栏目的游标
cursor cur_lmmc is
select distinct lmmc
FROM tmp_gztjlsb;
begin
--定义动态SQL
v_sql:='select rydm,xm';
--遍历工资栏目并拼写成插入的SQL
for cur_lmmc_rec in cur_lmmc loop
v_lmmc:=cur_lmmc_rec.lmmc;
v_sql:=v_sql||','||'sum(decode(lmmc'||','''||v_lmmc||''',je))'||' '||v_lmmc;
end loop;
v_sql:=v_sql||' from tmp_gztjlsb group by rydm,xm';
execute immediate 'insert into '||p_table||' '||v_sql;
commit;
end prc_rs_gzndbb;