LAG函数实现环比
select *,LAG(金额,1,0)OVER(ORDER BY 年月) 环比金额 from( SELECT Top 1000000 年, 季度, 年月 ,SUM(金额本位币) 金额 FROM ( SELECT * FROM [dbo].[T_output] ) cb_view GROUP BY 年, 季度, 年月 order by 年,季度, 年月 ) BB
如图:
当然还有更直观的写法
SELECT Top 1000000 年, 季度, 年月 ,SUM(金额本位币) 金额 ,LAG(SUM(金额本位币),1,0)OVER(ORDER BY 年月) 环比金额 FROM ( SELECT * FROM [dbo].[T_output] ) cb_view GROUP BY 年, 季度, 年月
其实会发现下面的写法和这里的写法获取的结果一样
SELECT Top 1000000 年, 季度, 年月 ,SUM(金额本位币) 金额 ,LAG(SUM(金额本位币),1,0)OVER(ORDER BY 年) 环比金额 FROM ( SELECT * FROM [dbo].[T_output] ) cb_view GROUP BY 年, 季度, 年月
一个是ORDER BY 年月 一个是ORDER BY 年,但是结果都是一样的。
参考:
https://blog.csdn.net/mango_love/article/details/84067911
SQL SERVER中LEAD和LAG函数
https://blog.csdn.net/leewhoee/article/details/20264653