CREATE OR REPLACE function DW.label1_rb_count1(date1 in date,label_id1 in number) return number
is
tmpVar NUMBER;
cnt1 number;
sql1 varchar(1000);
v0 number(30,6);
v3 number(30,6);
T1 number(30,6);
month1 varchar(7);
month2 varchar(7);
str1 varchar(10);
date2 date;
cursor cur1( f01 varchar2,parent_id1 number)
is
select parent_id,label_bm,label_id,count_bz
from label1_area
where day_report_flag=f01 and parent_id=parent_id1;
c_row cur1%rowtype;
begin
select to_char(date1,'yyyy-mm-dd') into str1 from dual;
select to_char(add_months(date1, -1),'yyyy-mm') into month2 from dual;
T1:=0;
FOR c_row in cur1('1',label_id1) loop
if c_row.count_bz='1' then
select nvl(a.v1_day_end,0) - nvl(a.v1_day_begin,0) into v3 from label1_day_report a
where to_char(a.date_day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')
and a.label_id= c_row.label_id ;
update label1_day_report a set a.V1_read=nvl(v3,0),a.v1_cnt=nvl(v3,0)
where to_char(a.date_day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')
and a.label_id= c_row.label_id ;
T1:=T1+nvl(v3,0);
v3:=label1_rb_count1(date1,c_row.label_id) ;
end if ;
if c_row.count_bz='2' then
v3:=label1_rb_count1(date1,c_row.label_id) ;
update label1_day_report a
set a.V1_cnt=v3
where to_char(a.date_day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')
and a.label_id= c_row.label_id ;
T1:=T1+v3;
end if;
if c_row.count_bz='3' then
v3:=label1_rb_count1(date1,c_row.label_id) ;
----如果是标志3 ,又没有子项,V1_CNT=V1END-V1BEGIN.
update label1_day_report a
set a.V1_cnt=v3
where to_char(a.date_day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')
and a.label_id= c_row.label_id ;
end if;
end loop;
update label1_day_report a set a.v1_cnt=T1
where to_char(a.date_day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')
and a.label_id= label_id1 ;
return T1;
return T1;
end;
/
CREATE OR REPLACE function DW.label1_rb_count4(date1 in date,label_id1 in number) return number
is
tmpVar NUMBER;
cnt1 number;
sql1 varchar(1000);
v0 number(30,6);
v3 number(30,6);
T1 number(30,6);
month1 varchar(7);
month2 varchar(7);
str1 varchar(10);
date2 date;
V1 NUMBER(30,6);
s1 number(30,6);
cursor cur1(date1 date,parent_id1 number)
is
select parent_id,label_bm,label_id,count_bz,count_bz2
from label1_day_report
where date_day=date1 and parent_id =parent_id1;
c_row cur1%rowtype;
begin
s1:=0;
FOR c_row in cur1(date1,label_id1) loop
T1:=label1_rb_count4(date1,c_row.label_id);
select
sum(decode(b.count_bz,'1',(nvl(b.v1_day_end,0)-nvl(b.v1_day_begin,0)),'2',nvl(b.v1_cnt,0),'3',decode(b.count_bz2,'1',(nvl(b.v1_day_end,0)-nvl(b.v1_day_begin,0)),'2',nvl(b.v1_cnt,0))))
into v0
from label1_day_report b
where
to_char(b.date_Day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')
and b.parent_id= c_row.label_id
and b.count_bz<>'3';
-- update label1_day_report a set a.V1_cnt = (select sum(decode(b.count_bz, '1',nvl(b.v1_day_end,0)- nvl(b.v1_day_begin,0),
v0:=nvl(v0,0);
update label1_day_report a set a.V1_cnt =v0
where to_char(a.date_Day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')
and a.label_id= c_row.label_id;
s1:=s1+v0;
end loop;
update label1_day_report a set a.V1_cnt =nvl(a.v1_day_end,0)-nvl(a.v1_day_begin,0)
where to_char(a.date_Day,'yyyy-mm-dd')=to_CHAR(date1,'yyyy-mm-dd')
and a.label_id= label_id1
and a.count_bz='3';
RETURN s1;
end ;
/