以下内容可能需要数据库的相关知识才能更容易理解,不过我会尽量描述的通俗易懂一些。

首先准备两个表格文件:一个命名为 “database.et” 文件作为被查询的数据存储文件;另一个命名为 “报表.et” 文件,作为查询的显示窗口。(这两个文件要打开WPS后创建:新建表格文件,另存为,选et扩展名)

文件名 图 3.0

database.et 文件中有两个工作表,分别命名为 src 与 set。src作为将要查询的主要数据源,存放准备好的数据,本表数据非真实数据,数据表格结构模仿预算一体化系统中的用款计划表;set 表存放一些扩展数据集合。如 图3.1、图3.2

database set 图3.2

下面分别解析一下 “database src 图3.1” 和 “database set 图3.2” 的表格结构。


src表其实叫做 “单位申请计划表”,共13个字段列,单位发起的某个项目的一条用款计划就生成了一条记录。

一个项目当年预算的总金额叫指标金额,单位按计划向财政申请拨款的资金就是计划金额,单位录入计划申请时,系统将这笔计划金额累加到项目的已用指标里,同时扣减指标余额

这里面项目有重复的,项目重复有两种情况:

一是上文说到的单位将一个项目录入了多个计划,这很好理解;

二是这个表的项目信息实际上来源于系统内部的 “项目细化表”和项目其他相关表,从项目这些相关表获取的字段有 9 个,分别是:

1-[项目]、2-[项目类别]、3-[支出功能分类]、4-[政府经济分类]、5-[部门经济分类]、6-[指标金额]、7-[已用指标]、8-[指标余额]、9-[是否政府采购]。

学过数据库的朋友都知道表内的关键要素都有唯一编码,而项目编码这个关键信息并没有体现在src( 单位申请计划表)表中,所以在src 表中并不是按项目名(src 表中的第三个字段列)来唯一区分的,本表区分不同项目只能用表中的多个字段列来区分:项目+支出功能分类+政府经济分类+部门经济分类+是否政府采购。至于为什么要区分出某单位的项目,这在以后我再用到的时候会更详细地说明,目前只做了解即可。

另外需要说明的是,尽管这个表看起来有些别扭,但是构建这个查询报表是从实际使用出发,系统完成以后,可以直接使用的。所以src表中的列名与系统导出的数据保持一致,只是删除了一些不重要的列,实际使用时,只需将系统导出的数据,包括标题行所有数据覆盖src中的数据即可。


set 表是查询src 表时需要外连接的一些数据集。借助这些数据集,在以后的SQL查询语句中,可以达到我想要的报表格式。

(什么是外连接,这是关系型数据库的基本概念,关系数据库是由多个表组成的,而这些表都是互相有关系的,通常有一对一、一对多、多对多这些关联,所以叫做关系型数据库。所以外连接就是以某个表为基础去有关联的表中把对应数据查询出来。)


本节内容需要准备大量数据,并且这些数据有内在关联关系,这些数据还不能是真实数据,所以花费了我大量时间,更新有点晚了。

下一节,进行调试查询连接这两个表。