不用表和临时表的情况下,如何用查询的方式得出结果两个给定日期之间的所有日期列表:
比如:
给定日期 2013-4-23、2013-5-26
通过查询得出:
2013-4-23
2013-4-24
2013-4-25
...
2013-5-26
一般来说,我们都是表来处理,但是这里需要我们用查询来实现,两个查询即可。
第一步,任意选择一个表(数据足够多,能够唯一排序,有自动编号最好),然后就生成所需记录条数(结束时间-开始时间)的查询1。
第二步,利用以上查询1,很容易得出如下结果的查询2:
2013-4-23
2013-4-24
2013-4-25
...
2013-5-26
第三步,利用查询2就可以做很多事了,
效果图:
部分查询内容:
SELECT #2013-4-23# + DCount("1","营业报表","营业报表.ID<" & [dyb].[ID] ) AS 连续日期 FROM 营业报表 AS dyb union SELECT #2013-5-9# + DCount("1","营业报表","营业报表.ID<" & [dyb].[ID] ) AS 连续日期 FROM 营业报表 AS dyb union SELECT #2013-5-25# + DCount("1","营业报表","营业报表.ID<" & [dyb].[ID] ) AS 连续日期 FROM 营业报表 AS dyb union SELECT #2013-6-10# + DCount("1","营业报表","营业报表.ID<" & [dyb].[ID] ) AS 连续日期 FROM 营业报表 AS dyb UNION SELECT top 2 #2013-6-26# + DCount("1","营业报表","营业报表.ID<" & [dyb].[ID] ) AS 连续日期 FROM 营业报表 AS dyb;
没有使用临时表,只是根据数据源的情况动态修改查询的SQL语法,基本满足需求。
详细请查看:http://www.office-cn.net/thread-117020-1-1.html