2015-01-09 69 views
1

我在我的Access数据库中运行SQL查询以累积我在每条记录之后运行的距离。SQL计算运行

我用下面的代码来计算运行总计:

SELECT a.run, a.year, a.date, a.distance, round((SELECT SUM(b.distance) 
         FROM vwAllCast b 
         WHERE b.run <= a.run),1) AS AccDistance 
FROM vwAllCast AS a 
ORDER BY a.run DESC; 

此代码返回所有的记录总结在AccDistance所有距离。现在,我想每年都重新进行一次积累。有没有人有一个想法如何实现?

+2

只需添加where子句过滤recrods – HaveNoDisplayName

+0

或者按年分组,以获得同一查询结果中的所有年份 –

回答

0

一样的Piyush说,我觉得这样的事情应该工作:

SELECT a.run, a.year, a.date, a.distance, round((SELECT SUM(b.distance) 
         FROM vwAllCast b 
         WHERE b.run <= a.run and a.year = b.year),1) AS AccDistance 
FROM vwAllCast AS a 
ORDER BY a.run DESC; 
+0

Ahh击败了我:) –

+1

感谢FuzzyTree和Aramillo,buth查询的工作非常漂亮。自我加入和分组速度要快一点。 –

0

自由可能比相关子查询更快加入+组

SELECT a.run, a.year, a.date, a.distance, SUM(b.distance) 
FROM vwAllCast AS a 
JOIN vwAllCast b on b.run <= a.run AND b.year = a.year 
GROUP BY a.run, a.year, a.date, a.distance 
ORDER BY a.run DESC