CREATE OR REPLACE PROCEDURE p_sumpoints
is
--同比值
mtb varchar2(30);
--同比时间
mtbtime varchar2(10);
--环比值
mhb varchar2(30);
--环比时间
mhbtime varchar2(10);
--今年累计
jnlj varchar2(30);
--今年累计时间
jnljtime varchar2(100);
--去年同期
qntq varchar2(30);
--去年同期时间
qntqtime varchar2(100);
CURSOR cur IS select k.strid,k.name,k.ny,k.fz from T_B_YY_QYJBQK k where k.ny = '2017-03';
BEGIN
FOR cur_result in cur LOOP
--获取同比时间 mtbtime
SELECT to_char(ADD_MONTHS(TRUNC(to_date(cur_result.ny,'yyyy-MM')),-12),'yyyy-mm') into mtbtime FROM dual;
--获取环比时间 mhbtime
select to_char(ADD_MONTHS(trunc(to_date(cur_result.ny,'yyyy-mm')),-1),'yyyy-mm') into mhbtime from dual;
--获取去年本月的数据
select b.fz into mtb from T_B_YY_QYJBQK b where b.strid = cur_result.strid and b.ny = mtbtime;
--获取上月的数据
select t.fz into mhb from T_B_YY_QYJBQK t where t.strid = cur_result.strid and t.ny = mhbtime;
--输出月同比值
Dbms_output.Put_line((cur_result.fz-mtb)/mtb);
--输出月环比值
Dbms_output.Put_line((cur_result.fz-mhb)/mhb);
--获取今年年初到本月的所有年份
SELECT wmsys.wm_concat(''''||to_char(trunc(to_date(cur_result.ny,'yyyy-MM')),'YYYY')||'-'||substr('0'||to_char(rownum),-2,2)||'''') into jnljtime FROM DUAL CONNECT BY rownum <= (select to_char(trunc(to_date(cur_result.ny,'yyyy-MM')),'mm')from dual);
--输出今年年初到本月的所有年份
Dbms_output.Put_line(jnljtime);
--查询今年累计数据
**select sum(fz) into jnlj from T_B_YY_QYJBQK t where t.strid = cur_result.strid and t.ny in (jnljtime) group by t.strid; **
--查询去年同期累计
select sum(fz) into qntq from T_B_YY_QYJBQK t where t.strid = cur_result.strid and t.ny in ('2016-01','2016-02','2016-03') group by t.strid;
--输出今年累计数据
Dbms_output.Put_line(jnlj);
--输出去年同期累计
Dbms_output.Put_line(qntq);
END LOOP;
END;