SQL SERVER没有ORACLE的sum over( order by)那样的功能,至少目前是这样。 实现代码: declare @电量表 table(日期 int,日发电量 float, 计划发电量 float,日均发电量 float) insert into @电量表 select 1,3.8788,null,3.8024 insert into @电量表 select 2,3.8846 ,null,3.8024 insert into @电量表 select 3,3.7841 ,null,3.8024 insert into @电量表 select 4,3.7946,null,3.8024 insert into @电量表 select 5,3.7672,null,3.8024 insert into @电量表 select 6,3.7178,null,3.8024 insert into @电量表 select 7, 3.7871,null,3.8024 SELECT K.日期,K.日发电量,K.计划发电量,K.日均发电量,S.电量累计 FROM @电量表 K INNER JOIN ( SELECT M.日期,SUM(DL.日发电量) AS 电量累计 FROM @电量表 DL INNER JOIN (SELECT * FROM @电量表) M ON (DL.日期 <= M.日期) WHERE (M.日期 <= 7) GROUP BY M.日期, M.日发电量 )S ON(K.日期=S.日期) ORDER BY K.日期 执行结果是: