数据修整之月份补全
在常规报表设计中,有这样的需求。
基础数据表中只有某几个月的数据,但是实际显示时却要显示包含全部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.月份;