数据修整之月份补全

本文介绍了一种通过SQL语句实现全月份报表的方法,即使原始数据只包含部分月份,也能生成包含全年12个月份的报表。该方法适用于任何需要数据补全的场景,并通过Access数据库示例展示了如何构造虚拟表及使用外连接来填充缺失数据。

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

基础数据表中只有某几个月的数据,但是实际显示时却要显示包含全部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.月份;

转载于:https://www.cnblogs.com/chenyong677/archive/2008/10/10/1308056.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值