数据修整之月份补全

在常规报表设计中,有这样的需求。

基础数据表中只有某几个月的数据,但是实际显示时却要显示包含全部12个月份的报表。
同理,该方法适用于任何需要数据补全的情况。

这个依靠SQL语句可以实现,在这里我使用Access进行示例,如果你使用其他数据库可能会有更好的方法,但是思路基本上是一致的。

假设基础数据表如下:

构造一个月份表,可以通过 SQL语句构造一个虚拟表

建立一个查询,使用外连接

注意使用了IIF把那些补上去的行设置为0

出来的结果如下图所示,

这样的数据就能实现全月份的报表了。

使用一个既有的view或者水晶报表里的command即可。

 

注意:
如果你使用了一些过滤条件,那么很可能把填好的值过滤掉
那么需要先对表a进行过滤,最后再与b表进行right join即可。

如:

SELECT b.月份, a.日期, iif(isnull(a.销售额),0,a.销售额)
FROM [Select * from  test_月份补全1 where 过滤条件] AS a RIGHT JOIN test_月份补全2 AS b ON month(a.日期)=b.月份
ORDER BY b.月份;

posted @ 2008-09-22 17:32  阿泰  阅读(1065)  评论(4编辑  收藏  举报