帮忙SQL下SQL:select empno, empname, over_startime,over_endtime,
overtimenum,leave_startime, leave_endtime,leavetimenum,
sum(coktotals)over(partition by empno) remainnum
from (
select e.empno, e.empname,
a.starttime over_startime,
a.endtime over_endtime,
'0' leave_startime,
'0' leave_endtime,
nvl(a.overtimenum, 0) overtimenum,
0 leavetimenum,
nvl(f_cokstat_equal_time(a.starttime, a.endtime),0) coktotals
from tmp_employee e, t_overtime a
where trunc(to_date(a.starttime,'yyyy-mm-dd hh24:mi:ss')) <= to_date(cok_cout_et,'yyyy-mm-dd')
and trunc(to_date(a.endtime,'yyyy-mm-dd hh24:mi:ss')) >= to_date(cok_cout_st,'yyyy-mm-dd')
and e.empno = a.empno(+)
and exists(
select 1
from t_roleinfo
where empno = e.empno
and programid = (
select 1
from t_programinfo
where programname = str_programname
)
) union all
select e.empno,
e.empname,
'0' over_startime,
'0' over_endtime,
t.starttime leave_starttime,
t.endtime leave_endtime,
0 overtimenum,
nvl(t.leavetimenum,0) leavetimenum,
-f_cokstat_record_one(i_cout_st,
i_cout_et,
to_date(substr(t.starttime, 1, 10), 'yyyy-mm-dd'),
to_date(substr(t.endtime, 1, 10), 'yyyy-mm-dd')
) coktotals
from tmp_employee e, t_leave t
where trunc(to_date(t.starttime,'yyyy-mm-dd hh24:mi:ss')) <= to_date(cok_cout_et,'yyyy-mm-dd')
and trunc(to_date(t.endtime,'yyyy-mm-dd hh24:mi:ss')) >= to_date(cok_cout_st,'yyyy-mm-dd')
and e.empno = t.empno(+)
and exists(
select 1
from t_roleinfo
where empno = e.empno
and programid = (
select 1
from t_programinfo
where programname = str_programname
)
)
);
直接弄个sql 出来,别人怎么看
明天上班,去问下一个Oracle DBA同事!