本存儲過程成功實現行列轉換統計
工資數據是豎表,即一個員工的工資對應多條工資欄目的記錄
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;