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

原文地址:https://www.cnblogs.com/Bruce_H21/p/11793898.html