oracle 存储过程 拼接表名_求助oracle存储过程高手:多表连接取动态表的动态字段(多个,字段名由其它表取)之和。...

各位高手,你们好!之前也发过两个贴子求存储过程,各位都给予了热心的帮助,非常感谢!现在我还有个需求做另一报表,希望各位高手各显神通,求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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值