案例:
原表有两列,分别为月份、月份销售额,而需要一条 SQL 语句实现统计出每个月份以及当前月以前月份销售额和
sql 测试数据准备:
DECLARE @``Temp Table
(
monthNo`` ``INT``, ``--- 月份
``MoneyData ``Float --- 金额
)
insert INTO @``TEMP
SELECT 1,100 ``UNION ALL
SELECT 2,200 ``UNION ALL
SELECT 3,300 ``UNION ALL
SELECT 4,400 ``UNION ALL
SELECT 5,500 ``UNION ALL
SELECT 6,600 ``UNION ALL
SELECT 7,600
SELECT monthNo, MoneyData, SUM``(MoneyData) OVER( ) ``AS '总销售额'``,
SUM``(MoneyData) OVER( PARTITION ``BY ID ) ``AS '当月销售额'``,
SUM``(MoneyData) OVER(``ORDER BY ID ``ASC``) ``AS '截止当月累计销售额'
FROM @``Temp
报错信息如下:

原因:SUM**(MoneyData) OVER (``ORDER BY ID ``ASC``) 必须在sqlserver 2012版及以上执行**
版本不满足的时候只能更换其他方式完成查询,如:
SELECT A.monthNo, SUM``(B.MoneyData) ``FROM @``Temp A ``INNER JOIN @``Temp B
ON A.monthNo>=B.monthNo GROUP BY A.ID
------ 重点在于 ON 条件,通过自连接 A.monthNo >= B.monthNo ,可获取所需数据,再通过
GROUP BY 、``SUM 即可统计求和