存储过程中的统计问题,在线等!

碧水幽幽泉 碧水幽幽泉 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
想在存储过程中再加入两个参数对下列的存储过程的结果集进行统计:
统计开始时间: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;
/
...全文
评论 5
收藏 已收藏
分享
返回顶部