如何创建具有多个值字段的交叉表查询

文章翻译 文章翻译
文章编号: 304458 - 查看本文应用于的产品
中级用户:要求具备基本的宏技能、编码技能和互操作技能。

本文仅适用于 Microsoft Access 数据库(.accdb 和 .mdb)。 有关本文的 Microsoft Access 2000 版本,请参见 209143.
有关本文的 Microsoft Access 97 版本,请参见 109939.
展开全部 | 关闭全部

概要

在 Microsoft Access 交叉表查询中,仅可以将一个字段或计算指定为值。您可能希望在查询中显示多个值。

以下示例显示了每个公司的两栏信息,即每年的订单数量和订单合计金额:
公司名称  1998 年订单  1998 年总计  1999 年订单  1999 年总计
--------------------------------------------------------------
ABC 公司   12           ¥855.00     15           ¥1010.25
XYZ 公司   1017         ¥22045.57   1050         ¥25345.29
				
这种类型的查询有时称为多值字段查询。

更多信息

若要创建多值字段交叉表查询,您必须为要计算的每个值创建一个单独的交叉表查询。然后可以使用选择查询将这些交叉表查询联接起来以显示所需的结果。

下面的示例使用示例数据库 Northwind.mdb 来创建一个查询,该查询显示的结果与上文“概要”部分中的示例类似,将显示每个公司每年的销售数量和销售总额。
  1. 打开示例数据库 Northwind.mdb,然后创建以下基于订单表、订单明细表和客户表的交叉表查询:
    查询:订单总计
    ------------------
    类型:交叉表查询
    联接:客户.[客户ID] <-> 订单.[客户ID]
    联接:订单.[订单ID] <-> 订单明细.[订单ID]
    
    字段:公司名称
    表名称:客户
    总计:分组依据
    交叉表:行标题
    
    字段:Expr1:Year([订购日期]) & " " & "订单总计"
    表名称:
    总计:分组依据
    交叉表:列标题
    
    字段:Expr2:Sum(CCur([单价]*[数量]*(1-[折扣])))
    表名称:
    总计:表达式
    交叉表:值
    					
  2. 将此查询另存为订单总计
  3. 创建以下基于订单表和客户表的交叉查询:
    查询:订单数量
    ------------------
    类型:交叉表查询
    联接:客户.[客户ID] <-> 订单.[客户ID]
    
    字段:公司名称
    表名称:客户
    总计:分组依据
    交叉表:行标题
    
    字段:Expr1:Year([订购日期]) & " " & "订单数量"
    表名称:
    总计:分组依据
    交叉表:列标题
    
    
    字段:订单ID
    表名称:订单
    总计:数量
    交叉表:值
    					
  4. 将此查询另存为订单数量
  5. 创建一个基于订单总计交叉表查询和订单数量交叉表查询的查询。使用要查看其结果的年份对应的“公司名称”、“订单总计”和“订单数量”字段。下面的示例使用 Microsoft Access 中前两年的“订单总计”和“订单数量”。
    查询:多值
    ----------------------
    联接:订单总计.[公司名称] <-> 订单数量.[公司名称]
    
    字段:公司名称
    表名称:订单数量
    
    字段:1997 年订单数量
    表名称:订单数量
    
    字段:1997 年订单总计
    表名称:订单总计
    
    字段:1998 年订单数量
    表名称:订单数量
    
    字段:1998 年订单总计
    表名称:订单总计
    					
  6. 当运行该多值查询时,您将会看到一个与下表类似的表:
    1997 年订单     1997 年订单  1998 年订单  1998 年订单
    公司名称            数量       总计          数量       总计
    --------------------------------------------------------------------
    三川实业              3      ¥2,022.50        3      ¥2,022.50
    东南实业              2        ¥799.75        1        ¥514.10
    坦森行贸易            5      ¥5,960.78        1        ¥660.00
    					
    注意:如果指定要进行串联的字段是多个表中的字段(在查询中进行联接),则必须向表达式中添加对应的表名。例如,在步骤 1 中应将以下代码行:
    Year([订购日期]) & " " & "订单总计"
    					
    更改为:
    Year([订单].[订购日期]) & " " & "订单总计"
    					
    如果将表名添加到 Table 行,则会生成语法错误。如果完全省略表名,则会生成二义性引用错误。

参考

有关交叉表查询的更多信息,请单击“帮助”菜单上的“Microsoft Access 帮助”,在 Office 助手或应答向导中键入“交叉表查询”,然后单击“搜索”以查看返回的主题。

属性

文章编号: 304458 - 最后修改: 2008年5月29日 - 修订: 6.1
这篇文章中的信息适用于:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 标准版
关键字:?
kbquery kbhowto KB304458
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com