Office中国论坛/Access中国论坛

标题: 如何实现滚动累计查询 [打印本页]

作者: lazybird    时间: 2012-6-3 20:33
标题: 如何实现滚动累计查询
问题很简单,一个月产量的报表,有"型号,月产量,月份"三列。现想用查询添加“年产量”这一列,计算方法是滚动累计前12个月。比如4月份的年产量显示去年5月到今年4月的总和,5月份的年产量则显示去年6月到今年5月的总和,以此类推。

用Excel很简单,但用Access似乎很复杂,用  Dsum的方法显示大量数据似乎行不通,会导致电脑十分缓慢。
哪位高手指点一下,应该会有比较简单的办法,多谢了先。
作者: Henry D. Sy    时间: 2012-6-4 09:40
滚动是什么意思?
作者: lazybird    时间: 2012-6-4 10:27
就是依次向前12个月累加的意思,可能我用词有误,不过帖子里应该解释得很清楚了,版主有空帮忙看看,。
作者: Henry D. Sy    时间: 2012-6-4 10:45
二个问题
1. 日期为什么用文本格式
2. 月产量里为什么会有多条记录(根本就是日产量)
  1. SELECT a.型号, a.月份, a.月产量, (select sum(月产量) from 月产量 as b where b.型号=a.型号 and Format([b.月份],"yymm")<=Format([a.月份],"yymm") and Format([月份],"yymm")>Format(DateAdd("yyyy",-1,[a.月份]),"yymm")) AS 年产量
  2. FROM 月产量 AS a;
复制代码
没有核对,你自己看看!
[attach]49297[/attach]
作者: lazybird    时间: 2012-6-4 15:20
不好意思,从Excel导入数据的时候没有改过来。Access里面的日期格式没有找到显示月份的,所以也不知道怎么改。(这一点好像和Excel有很大差别,Excel日期格式比Access多很多,有显示年月的。)
仔细研究了楼主的方法,虽然不是很理解,但运行结果是对的,套用到我的数据库里面也可以用,虽然处理大量数据的时候还是有点慢,(1万条左右),但比直接用Dsum函数快了很多了。看来Access的精髓还是能够熟练运用各种查询方法啊。
作者: Henry D. Sy    时间: 2012-6-4 16:42
也可以试试ado方法!
作者: ycxchen    时间: 2012-6-5 10:24
同意,用ADO快。
作者: xlb004    时间: 2016-3-20 10:29
uuuuuuuuu




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3