首页 新闻 搜索 专区 学院

方法的调用,多表查询的问题?

0
悬赏园豆:5 [待解决问题]

我想查询好些表的数据,然后进行计算处理后保存到另一个表中。就是薪资计算那样的。这些数据怎么调用他们计算呢?并且怎么一行一行的计算?查询出的好些条数据怎么注意计算呢?然后再怎么保存?

小武tz的主页 小武tz | 初学一级 | 园豆:152
提问于:2012-11-19 13:19
< >
分享
所有回答(3)
0

你可以写个程序来运行啊,或者是写个windows服务,定时的运算

相信程序的逻辑,楼主都是清楚的

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-19 13:33

我用antlr解析的公式。不知道怎么调用- -

支持(0) 反对(0) 小武tz | 园豆:152 (初学一级) | 2012-11-19 14:45
0

可以sql查询中就进行计算,into表

比如 

select a.人名,b.基本工资,c.考勤天数,d.奖金,e.税率,(b.基本工资*考勤天数/应出勤天数+奖金)*(1-税率) as 实际发送工资
into 应发工资201211191350
from 人员表 a
left join 基本工资表 b on a.userid=b.userid
left join 考勤表 c on a.userid=c.userid
left join 奖金表 d on a.userid=d.userid
left join 税金表 e on (b.基本工资*考勤天数/应出勤天数+奖金) between 税金区间
飞来飞去 | 园豆:2057 (老鸟四级) | 2012-11-19 13:49
0

建议用存储过程实现,分为三步:

1、从众多表中查出数据源

2、根据业务逻辑进行数据拼凑

3、将计算完的数据插入到新表中

eg:

create or replace procedure XXX(flag out varchar2) is
tempnum varchar(10);
begin
  flag    := '1';
  tempnum := 0;
---取数据源
 for resoutce_cour in (select tce.id
                          from tresource tce
                         where not exists
                         (select 1
                                  from trole_resource tre
                                 where tre.resource_id = tce.id
                                   and tre.role_id = 1000)
                           and tce.name in ('xx', 'xx', 'xx')) loop
    dbms_output.put_line(resoutce_cour.id);
--拼凑数据
tempnum :=resoutce_cour.id||'abc'
...
...
--插入新表
insert into trole_resource values ((select max(id)+1 from ddd), tempnum .. ); end loop; commit; exception when others then flag := '0'; rollback; end XX;
vancegf | 园豆:234 (菜鸟二级) | 2013-01-24 10:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册