存储过程中的统计问题,在线等!
碧水幽幽泉 2009-12-17 10:54:49 想在存储过程中再加入两个参数对下列的存储过程的结果集进行统计:
统计开始时间:stat_starttime date 统计结束时间:stat_endtime date
即止显示的t_overtime和t_leave中的starttime、endtime在stat_starttime~stat_endtime 内的信息
附存储过程:
create or replace procedure p_cok_stat_query_byEmpNo(
/**
* PURPOSE : 考勤统计查询,此过程由Java控制事务。
* REVISION>
Version Date Author Description
-------- -------- ---------- -------------------
V1.0D10 20091217 hbq 1. 创建存储过程
*/
str_empno in t_programinfo.programno%type, --项目编号
cur_result out sys_refcursor --结果集
)
is
begin
open cur_result for
select * from (
with tmp_employee as (
select empno, empname
from t_employeeinfo
where empno = str_empno
)
select empno, empname,over_startime,over_endtime,leave_startime, leave_endtime,
nvl(overtimenum, 0), nvl(leavetimenum, 0),
nvl(sum(overtimenum - leavetimenum) over(partition by empno), 0) remaintime
from (
select e.empno, e.empname,
a.starttime over_startime, a.endtime over_endtime,
'0' leave_startime,
'0' leave_endtime,
a.overtimenum,
0 leavetimenum,
1 over_or_leave
from tmp_employee e, t_overtime a
where e.empno = a.empno(+)
union all
select e.empno, e.empname,
'0' over_startime, '0' over_endtime,
a.starttime leave_starttime, a.endtime leave_endtime,
0 overtimenum,
a.leavetimenum, 2 over_or_leave
from tmp_employee e, t_leave a
where e.empno = a.empno(+)
)
);
end;
/