4.8、交叉表查询设计
交叉表查询是 Access支持的另一类查询
对象。交叉表查询显示来源于表中某个字段
的总结值(合计、计算以及平均),并将它
们分组,一组列在数据表的左侧,另一组列
在数据表的上部。例如,在,零售商店管理信息
系统” 数据库的, 销售数据记录, 表中,如果
希望得到各个销售人员的销售总金额一览表,
就需要应用交叉表查询来实现。可以看到,
交叉表查询运行的显示形式,是作为数据源
的表转置后形成的数据表。即,将数据源表
中的某一字段数据作为交叉表查询的字段名,
某几个字段数据作为分类汇总的依据,某一
个字段数据被汇总计算后显示在各自的字段
下。
图 4-24,销售数据记录 _交叉表”的数据表视

4.8、交叉表查询设计
4.8.1、应用向导创建交叉表查询
4.8.2、在交叉表查询设计视图中
修改交叉表查询
仔细观察图所示,就会发现,它还不是最终所
需的形式。其中,,总计:销售数量, 显示的
是商品销售数量的合计数,而我们所期望的是
用, 总计, 字段显示商品销售金额的合计数,
这是由于作为查询数据源的, 销售数据记录,
表中没有, 销售金额, 字段的缘故。另外,我
们还希望, 总计, 字段数据的显示格式为, 货
币, 数据格式。因此,在应用向导完成交叉表
查询的创建操作之后,还应该加以一些设计修
改。交叉表查询的设计修改操作需在交叉表查
询设计视图中进行。
4.8.1、应用向导创建交叉表查询
在数据库设计视图中的查询对象选项卡上,选
定刚刚应用向导建立完成的, 销售数据记录 _交叉
表,,单击工具栏上的, 设计, 按钮,即进入交叉
表查询设计视图,如图所示,它显示了应用向导建
立的, 销售数据记录 _交叉表, 设计参数。在这个
视图中,可以看到三个用以分类的, 行标题, 列、
一个用以汇总的, 列标题, 列和一个用以计算的
,值, 列(其字段名为, 值,Sum([销售数据记
录 ]![销售单价 ]*[销售数据记录 ]![销售数量 ])”,可
以利用表达式向导设定),这是任何一个交叉表查
询的基本组成。最后一列的作用是得到一个合计数,
其字段名为, 总计,Sum([销售数据记录 ]![销售单
价 ]*[销售数据记录 ]![销售数量 ])”,也是利用表达
式向导设定的。
图 4-25,交叉表查询向导 1”对话框
图 4-26,交叉表查询向导 2”对话框
图 4-27,交叉表查询向导 3”对话框
图 4-28,交叉表查询向导 4”对话框
图 4-29,交叉表查询向导 5”对话框
图 4-30 应用向导建立的“销售数据记录 _
交叉表”运行形式
4.8.2 在交叉表查询设计视图中修改交叉表查询
?在数据库设计视图中的查询对象选项卡
上,选定刚刚应用向导建立完成的“销
售数据记录 _交叉表”,单击工具栏上的
“设计”按钮“”,即进入交叉表查询
设计视图,如图 4-31所示。在这个视图
中,可以看到三个用以分类的“行标题”
列、一个用以汇总的“列标题”列和一
个用以计算的“值”列,这是任何一个
交叉表查询的基本组成。最后一列的作
用是得到一个合计数,其字段名为“总
计 销售金额, 销售金额”。
图 4-31 应用向导建立的“销售数据记录 _交叉表”属性

为了修改数字类型列的数据
显示格式,先令鼠标停留在对应
列的, 字段, 行中,再单击工具
栏上的, 属性, 按钮,”,在随
即弹出的, 字段属性, 对话框中
的, 格式, 行内,就可以根据需
要选定显示格式。
在本实例中,需要分别将, 值,Sum([销售
数据记录 ]![销售单价 ]*[销售数据记录 ]![销售数
量 ])” 字段和, 总计,Sum([销售数据记录 ]![销
售单价 ]*[销售数据记录 ]![销售数量 ])” 字段的显
示格式设置为, 货币, 格式。可以按照如下方法
操作,令鼠标停留在, 总计,Sum([销售数据记
录 ]![销售单价 ]*[销售数据记录 ]![销售数量 ])” 字
段行中,再单击工具栏上的, 属性, 按钮,”,
即可见到随即弹出的, 字段属性, 对话框。在
,字段属性, 对话框中的, 常规, 选项卡上有一
个, 格式, 行,单击该行右侧的列表按钮,即可
从中选取, 货币, 格式,如图所示,这就完成了
,总计,Sum([销售数据记录 ]![销售单价 ]*[销售
数据记录 ]![销售数量 ])” 字段的显示格式设定操
作。
采用同样的方法可以进行, 值:
Sum([销售数据记录 ]![销售单价 ]*[销售
数据记录 ]![销售数量 ])” 字段的显示格
式参数设置操作,即将其数据显示格式
也设置为, 货币, 格式。
至此,一个名为, 销售数据记录,
的交叉表查询就按照原定的目标实现了。
可以运行之,仔细观察原定目标实现的
准确性。
在进行数据库应用系统设计时,应
该根据实际的系统需求在数据库中设计
合适的交叉表查询对象。
图 4-31 应用向导建立的“销售数据记录 _交叉表”属性

图示交叉表查询对象的 SQL语句为:
TRANSFORM Sum([销售数据记录 ]![销售
单价 ]*[销售数据记录 ]![销售数量 ]) AS 值
SELECT 销售数据记录,货号,销售数据记
录,货名,销售数据记录,规格,
Sum([销售数据记录 ]![销售单价 ]*[销售数
据记录 ]![销售数量 ]) AS 总计
FROM 销售数据记录
GROUP BY 销售数据记录,货号,销售数据
记录,货名,销售数据记录,规格
PIVOT 销售数据记录,销售人员 ;