sqlserver基本介绍 sql server有没有sum over?
sql server有没有sum over?
有的
原表有两列,分别为月份、月份销售额,而需要一条 SQL 语句实现统计出每个月份以及当前月以前月份销售额和。
SQL 测试表脚本
DECLARE @Temp Table( ID INT, --- 月份 MoneyData Float --- 金额) insert INTO @TEMPSELECT 1,100 UNION ALLSELECT 2,200 UNION ALLSELECT 3,300 UNION ALLSELECT 4,400 UNION ALLSELECT 5,500 UNION ALLSELECT 6,600 UNION ALLSELECT 7,600
一 自连接
SELECT A.ID, SUM(B.MoneyData) FROM @Temp A INNER JOIN @Temp BON A.ID>=B.ID GROUP BY A.ID
------ 重点在于 ON 条件,通过自连接 A.ID >= B.ID ,可获取所需数据,再通过
GROUP BY 、SUM 即可统计求和
二 开窗函数
SELECT ID, MoneyData, SUM(MoneyData) OVER( ) AS "总销售额",SUM(MoneyData) OVER( PARTITION BY ID ) AS "月销售额", SUM(MoneyData) OVER( ORDER BY ID ASC) AS "当月 当月前销售额" FROM @Temp
---- 此处,使用开窗函数使用更为简单,不过,其中 SUM() OVER ( ORDER BY ID ASC ) 即可实现以上功能
关于,开窗函数的具体用法,可参考微软 MSDN 官方 API 文档,最后,推荐一本开窗函数书:基于 SQL SERVER 2012 窗口函数。
sqlserver基本介绍 sql语句中的sum求和用法 sql server是干嘛的
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。