本存储过程成功实现行列转换统计
工资数据是竖表,即一个员工的工资对应多条工资栏目的记录
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;

|