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函数 统计环比
本文介绍了一种使用SQL进行环比和同比数据统计的方法,通过具体示例展示了如何利用LAG函数来实现这一目标。该方法适用于需要对比不同时间段数据变化的情况。

991

被折叠的 条评论
为什么被折叠?



