各位高手,你们好!之前也发过两个贴子求存储过程,各位都给予了热心的帮助,非常感谢!现在我还有个需求做另一报表,希望各位高手各显神通,求oracle存储过程。因涉及表较多,请各位先仔细理解需求及数据结构,在oracle中做调试。因我对oracle不熟且时间紧迫,希望各位在oracle调试成功后再发出来,在此先向各位道谢了!
一、需求说明:求出行政组织编码左相似于 01.01 的方案记录(通过T_cmsScheme left join T_OrgAdmin on T_cmsScheme.ForgID=T_OrgAdmin.fid where T_OrgAdmin.ForgNumber like '01.01%' 查出),在查出的方案记录中(查出‘方案1’和‘方案2’)找出其FHisTableName字段里的临时表。再从临时表中查出薪资期间为201001~201002(临时表 left join T_cmpPeriod on 临时表.FPeriodID=T_cmpPeriod.FID where T_cmpPeriod.FNumber between 201001~201002)的薪资记录,汇总字段名为“应发工资FYF001”、“岗位工资FJX002”、“绩效工资FJX002”及各类补贴津贴补助(即临时表中的字段名 in (select DISTINCT fnumber from T_cmpItem where Fname like '%补贴%' or Fname like '%津贴%' or Fname like '%补助%' ),在如下表T_cmpItem 表中筛出来的为 FSAL001/FSAL002/FSAL003/FSAL005/FSAL006)的合计值。
二、存储过程说明:输入参数有3个:行政组织编码ForgNumber、起始薪资期间FbegCmpNum 和结束薪资期间FendCmpNum.
输出参数:数据集(方案编号,方案名称,单位编码,单位名称,应发工资,绩效工资,岗位工资,各类津贴补贴补助)
输出结果集:(汇总单位编码为左相似01.01且薪资期间范围为[201001~201002]的应发工资\岗位工资\绩效工资\各类津贴补贴补助 的合计值)
方案编号 方案名称 单位编码 单位名称 应发工资 绩效工资 岗位工资 各种津贴补贴补助
Fnumber Fname ForgNumber ForgName FYF001 FJX002 FGW003 FtmpFld
A001 方案1 01.01.02 一分公司_本部_人事部 7400 0 2500 930
A002 方案2 01.01 一分公司_本部 6800 5500 1500 300
三、存储过程使用到的表结构及测试数据:
1、薪酬方案表名:T_cmsScheme
方案编号 方案名称 单位ID 历史记录表
Fnumber Fname ForgID FHisTableName
A001 方案1 Olk1 T_DB_4500
A002 方案2 OKA2 T_DB_8872
A003 方案3 OJH3 T_DB_9983
2、组织单位表名:T_OrgAdmin
单位ID 单位编码 单位名称
FID ForgNumber ForgName
Olk1 01.01.02 一分公司_本部_人事部
OKA2 01.01 一分公司_本部
OJH3 02.01 二分公司_本部
3、薪酬项目表:T_cmpItem
FID Fnumber Fname
THC1 FSAL001 节日补助
TDS1 FSAL001 节日补助
TWW3 FSAL001 节日补助
THC2 FSAL002 电脑补助
TSD3 FSAL002 电脑补助
THC3 FSAL003 交通补贴
THC4 FSAL004 岗位津贴
TKL3 FSAL004 岗位津贴
THC5 FSAL005 职称津贴
THC6 FSAL220 物业费
TWE3 FSAL220 物业费
THC7 FSAL221 卫生费
THC8 FSAL225 房租费
THC9 FSAL302 加班费
4、薪资期间:T_cmpPeriod
期间ID 期间编号 期间名称
FID FPeriodNum FPeriodName
PKL1 201001 201001
PJK2 201002 201002
PGD3 201003 201003
PYR4 201004 201004
PEW5 201005 201005
5、方案1临时表名: T_DB_4500
薪资期间ID 应发工资 岗位津贴 节日补助 交通补贴 岗位工资 房租费
FPeriodID FYF001 FSAL004 FSAL001 FSAL003 FGW003 FSAL225
PKL1 1000 80 50 100 500 200
PKL1 1400 100 50 100 600 140
PJK2 2000 100 50 100 1000 200
PJK2 3000 50 50 100 400 200
6、方案2临时表名:T_DB_8872
薪资期间ID 应发工资 绩效工资 岗位工资 节日补助 岗位津贴 卫生费 房租费
FPeriodID FYF001 FJX002 FGW003 FSAL001 FSAL004 FSAL221 FSAL225
PJK2 4000 3000 1000 50 100 10 200
PJK2 2800 2500 500 50 100 10 200
PGD3 1000 1200 600 50 100 10 200
PYR4 1200 1300 400 50 50 10 200
PEW5 2000 2200 200 50 50 10 200
7、方案3临时表名: T_DB_9983
期间编号 期间名称 应发工资 实发工资 职称津贴 交通补贴 卫生费 岗位津贴
FPeriodNum FPeriodName FYF001 FSF002 FSAL005 FSAL003 FSAL221 FSAL004
PJK2 201002 3000 2000 10 40 10 50
PJK2 201002 2300 2500 20 50 15 50
作者: bswendy
发布时间: 2010-12-03