这一节我将完成报表的查询方案设计。

首先,我从北京财政局网站,找到了预决算公开的相关信息,如图5.0:

wps打印映射报表(WPS表格报表的SQL数据查询方案设计)(1)

预决算数据 图5.0

可以看到,类似财政的数据,支出功能分类都是按三级汇总的形式在左侧分行显示;项目分类作为标题字段列显示,支出金额都是汇总显示的。

所谓支出功能分类,就是财政拨款的支出科目,这个支出科目是按功能来分类的,具体就是按一般公共服务、外交、公共安全、教育、科技等这些功能来分类的。

支出功能分类科目使用三级科目,编码共7位,其中:一级编码占3位、二级编码占5位、三级编码占7位。具体解析参考 图5.1与 图5.2。

wps打印映射报表(WPS表格报表的SQL数据查询方案设计)(2)

支出功能分类树形 图5.1

wps打印映射报表(WPS表格报表的SQL数据查询方案设计)(3)

支出功能分类列表 图5.2

下面是报表方案效果图 5.3,上面前三行为查询设置和条件与报表标题行,从第四行开始为SQL语句自动生成的数据区域。

wps打印映射报表(WPS表格报表的SQL数据查询方案设计)(4)

报表效果 图 5.3

数据从database 到报表的查询汇总示意图 5.4

wps打印映射报表(WPS表格报表的SQL数据查询方案设计)(5)

数据汇总方案 图5.4

总体来说,报表是根据功能分类和单位信息进行分类汇总的,并把项目分类根据行数据进行拆分,能熟练使用数据透视表的朋友应该很容易理解这个分行分列操作,但是数据透视表对数据源要求比较高,涉及复杂的汇总,还要使用公式设置辅助列,这对于某些个性化操作就很难实现,一些表格使用不熟练的朋友也很难办到。因此使用宏进行SQL查询,隐藏实现细节,使用者只需更新数据源和点点按钮就实现报表汇总的方案就好很多。

下面根据数据汇总方案 图5.4来初步分析一下src工作表:

1、数据量适中,一个月数据增量约3千条,使用宏SQL查询不会产生瓶颈。列数也不算多,从系统导出的源数据列为36列,而从src查询的列只有13列,方便查询。

2、查询主要是对【支出功能分类】这个列进行分行汇总,详细规则如下:

① 对计划金额,当支出功能分类和预算单位一致时,就将源数据中的计划金额进行合计;

② 对指标可用金额指标已用金额指标总金额,这三个列都是跟项目本身相关的。下面着重分析一下指标总金额在单位用款计划表中与项目和计划金额的关系。

指标总金额,在 “相同的项目”上是相等的,在src源中 “相同的项目”会因为录入的计划而重复。关于相同的项目:项目类别不同的项目肯定不是一个项目,除了项目类别,区分是否是同一个项目,使用【项目 单位 支出功能分类 政府经济分类 部门经费分类 政府采购】这六个字段,这六个字段只要有一个不同,就认为这是不同的项目

具体请参考图5.5,审计局的测算类公用经费项目,根据上面的区分原则,分为六个项目。这种情况是在预算编制细化过程中产生的,原本在项目储备阶段项目名称是不能重复的,但是,在项目细化过程中,一个项目资金要根据功能分类、经济分类、是否采购等区分多种用途,每个用途都会分配指标,就造成了相同的项目名称的指标被细化项分割成了多个。

红框内的两条计划才是同一个项目,在汇总时这项目的指标总金额不可以合计,只能选择其中一条,其他未在红框内的才能和这个一起汇总合计。指标可用金额指标已用金额也与此类同。但是红框内的计划金额要根据 ① 的要求汇总。

wps打印映射报表(WPS表格报表的SQL数据查询方案设计)(6)

项目区分 图 5.5

指标可用金额,即可用指标,是单位在录入用款计划后,细化项目的指标总金额减掉录入的计划金额而形成的。汇总此字段的规则与指标总金额的规则一致。需注意的是,可能存在在途资金会导致指标可用金额大于计划金额合计数的情况。在途资金是多岗审核形成的,第一岗把计划送审到第二岗,第二岗未进行审核,第三岗看不到这笔计划,但是可以看到以前录入计划的项目,这项目的指标部分已经被第一岗录入的计划修改了,所以就造成了项目的指标可用金额大于计划金额合计数的情况。

指标已用金额,即指标余额,指标总金额指标可用金额的差额。指标已用金额小于等于指标总金额。

3、单位字段列作为最底层的行分级数据进行汇总。因为可能相同的支出功能分类包括很多单位,所以再把单位做支出功能分类的下级汇总。

4、项目类别,此列与上面的列数据处理不同,要分行汇总。项目类别数据包括工资福利支出、对个人和家庭的补助支出、部门预算项目、专项资金项目和其他。把这些类别数据分别汇总,形成新的汇总列,其中专项资金项目包含其他类别的数据。

从上面对src表的分析,要实现报表图5.3效果图,可以得到以下SQL查询方法:

第一步,先把同一个项目的计划进行初步汇总,形成每条数据都是不同项目的临时查询表。这一步还要加入查询条件,就是图5.3中前三行标黄单元格,去掉无关数据,提高查询效率;

第二步,根据第一步生成的临时查询表,对功能分类和单位进行分级汇总,生成五级的汇总临时表,最后把这些分级汇总表进行合并排序,生成最后的报表。这一步要生成排序字段(图 5.3),五级汇总数据行的排序就依靠这个排序字段实现。

本节内容到此结束,下一节内容,我将详细说明这两步查询的实现。

,