select t.sum_date,
t.ind_value,
to_char((t.ind_value - t.ind_value2) / t.ind_value2 * 100,
'fm9999999990.00') || '%' ind_value2
from (select t.sum_date,
round(sum(ind_value) / 10000) ind_value,
round(lag(sum(ind_value) / 10000,
(select trunc(add_months(to_date(&end_sum_date,
'yyyymmdd'),
1),
'mon') - trunc(to_date(&end_sum_date,'yyyymmdd'), 'mon')
from dual), --统计上个月同天的值
0) over(order by sum_date)) ind_value2
from tb_lyj_out_pro_md t
group by sum_date
order by 1) t
where t.sum_date >= &begin_sum_date
and t.sum_date <= &end_sum_date
order by 1
t.ind_value,
to_char((t.ind_value - t.ind_value2) / t.ind_value2 * 100,
'fm9999999990.00') || '%' ind_value2
from (select t.sum_date,
round(sum(ind_value) / 10000) ind_value,
round(lag(sum(ind_value) / 10000,
(select trunc(add_months(to_date(&end_sum_date,
'yyyymmdd'),
1),
'mon') - trunc(to_date(&end_sum_date,'yyyymmdd'), 'mon')
from dual), --统计上个月同天的值
0) over(order by sum_date)) ind_value2
from tb_lyj_out_pro_md t
group by sum_date
order by 1) t
where t.sum_date >= &begin_sum_date
and t.sum_date <= &end_sum_date
order by 1
--lag函数统计在一次查询中取出同一字段的前N行的数据和后N行的值, 如果是环比同比的话 也就是统计当前时间 前一天 或者 一个月 或者一年的行的值。
故可以使用lag函数 统计环比
版权声明:本文为muou2008原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。