ACC: 创建带有多值字段的交叉表查询

文章翻译 文章翻译
文章编号: 109939 - 查看本文应用于的产品
初级用户: 要求用户界面的单用户计算机上的知识。

展开全部 | 关闭全部

本文内容

概要

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

例如对于下面的示例演示两个列的每个订单,数的计数的公司信息和顺序计算每年的总和:
   Company Name  1989 Orders  1989 Total  1990 Orders  1990 Total
   --------------------------------------------------------------
   ABC Company   12           $855.00     15           $1010.25
   XYZ Company   1017         $22045.57   1050         $25345.29
				
这种类型的查询有时称为多值字段的查询。

注: 在示例文件的 Qrysmp97.exe 中可以看到的这篇文章中使用该技术的演示。有关如何获得此示例文件,请参阅下列文章 Microsoft 知识库中相应的信息:
182568ACC97: Microsoft Access 97 示例查询可用在下载中心

更多信息

若要创建多值字段交叉表查询,您必须创建两个单独的交叉表查询与为您要计算每个值的固定的列标题。这些两个查询可然后联接,使用选择查询显示所需的结果。

下面的示例使用 Microsoft Access 版本 7.0 和 Microsoft Access 97 (或 NWIND.MDB 版本 2.0 版或更早版本中的) 中示例数据库 Northwind.mdb 创建一个查询,以显示结果类似于,上面的示例显示的数,并为每个公司每年的总计。

步骤 1: 创建订单的总交叉表查询

若要进行订单总计的交叉表查询,请按照下列步骤操作:
  1. 打开示例数据库 Northwind.mdb (或 NWIND.MDB 2.0 或更早版本中的),并创建基于订单、 订单明细和客户表下面的交叉表查询
          Query: Order Total
          ------------------
          Type: Crosstab Query
          Join: Customers.[CustomerID] <-> Orders.[CustomerID]
    
          NOTE: In versions 1.x and 2.0, there is a space in Customer ID.
    
          Join: Orders.[OrderID] <-> Order Details.[OrderID]
    
          NOTE: In versions 1.x and 2.0, there is a space in Order ID.
    
          Field: CompanyName
             Table Name: Customers
             Total: Group By
             Crosstab: Row Heading
    
          NOTE: In versions 1.x and 2.0, there is a space in Company Name.
    
          Field: Expr1: Year([OrderDate]) & " " & "Order Total"
             Table Name:
             Total: Group By
             Crosstab: Column Heading
    
          NOTE: In versions 1.x and 2.0, there is a space in Order Date.
    
          Field: Expr2: Sum(CCur([UnitPrice]*[Quantity]*(1.-[Discount])))
             Table Name:
             Total: Expression
             Crosstab: Value
    
          NOTE: In versions 1.x and 2.0, there is a space in Unit Price.
    					
  2. 在查询网格的上半部分中的灰色区域上的任何地方,即可选定查询。单击在视图菜单上的查询属性、 选中固定列标题复选框和在固定列标题框中键入的条目适合您的 Access 版本:
          Version 1.x:      "1989 Order Total";"1990 Order Total";"1991 Order
                            Total";"1992 Order Total"
    
          Version 2.0:      "1991 Order Total";"1992 Order Total";"1993 Order
                            Total";"1994 Order Total"
    
          Version 7.0:      "1993 Order Total";"1994 Order Total";"1995 Order
                            Total"
    
          Version 97:       "1994 Order Total";"1995 Order Total";"1996 Order
                            Total"
    					
注: 在 Microsoft Access 版本 2.0、 7.0 和 97 中,FixedColumnHeadings 属性称为列标题。

第二步: 创建订单计数交叉表查询

  1. 创建以下的交叉表查询基于订单和客户表:
          Query: Order Count
          ------------------
          Type: Crosstab Query
          Join: Customers.[CustomerID] <-> Orders.[CustomerID]
    
          NOTE: In versions 1.x and 2.0, there is a space in Customer ID.
    
          Field: CompanyName
             Table Name: Customers
             Total:      Group By
             Crosstab:   Row Heading
    
          NOTE: In versions 1.x and 2.0, there is a space in Company Name.
    
          Field: Expr1: Year([OrderDate]) & " " & "Order Count"
             Table Name:
             Total: Group By
             Crosstab: Column Heading
    
          NOTE: In versions 1.x and 2.0, there is a space in Order Date.
    
          Field: OrderID
             Table Name: Orders
             Total:      Count
             Crosstab:   Value
    
          NOTE: In versions 1.x and 2.0, there is a space in Order ID.
    					
  2. 在查询网格的上半部分中的灰色区域上的任何地方,即可选定查询。单击在视图菜单上的查询属性、 选中固定列标题复选框和在固定列标题框中键入的条目适合您的 Access 版本:
          Version 1.x:      "1989 Order Count";"1990 Order Count";"1991 Order
                            Count";"1992 Order Count"
    
          Version 2.0:      "1991 Order Count";"1992 Order Count";"1993 Order
                            Count";"1994 Order Count"
    
          Version 7.0:      "1993 Order Count";"1994 Order Count";"1995 Order
                            Count"
    
          Version 97:       "1994 Order Count";"1995 Order Count";"1996 Order
                            Count"
    					
注: 在 Microsoft Access 版本 2.0,7.0、 97,FixedColumnHeadings 属性称为列标题。

第三步: 创建多值查询

  1. 创建选择查询基于订单总计和订单计数交叉表查询。 您将使用公司名称以及订单总计和订单计数字段年您要查看其结果。下面的示例在 Microsoft Access 97 使用过去两年的订单总计和订单计数
          Query: Multiple Values
          ----------------------
          Join: Order Total.[CompanyName] <-> Order Count.[CompanyName]
    
          NOTE: In versions 1.x and 2.0, there is a space in Company Name.
    
          Field: CompanyName
             Table Name: Order Count
             Show: Yes
          Field: 1995 Order Count
             Table Name: Order Count
             Show: Yes
          Field: 1995 Order Total
             Table Name: Order Total
             Show: Yes
          Field: 1996 Order Count
             Table Name: Order Count
             Show: Yes
          Field: 1996 Order Total
             Table Name: Order Total
             Show: Yes
    					
运行多值查询将产生类似于下列的表中:
 Company Name          1995 Order Count 1995 Order Total 1996 Order Count..
 --------------------------------------------------------------------------
 Alfred's Futterkiste  3                $2,022.50        3
 Ana Trujillo          2                  $799.75        1
 Antonio Moreno        5                $5,960.78        1
				

注: 此方法如果不起作用字段中指定的连接 (步骤 One(expr1)) 是多个有一个查询中联接表中的字段。没有任何办法强迫接受在表达式中的表名,而不会产生保留的错误-1310 查询。如果将表名添加到表行中,您生成语法错误。如果完全留的表名,您生成不明确的引用时出错。

参考

有关交叉表查询的详细信息,搜索"交叉表查询,创建,"然后"创建一个交叉表查询而无需使用一个向导,并使用 Microsoft Access 97 帮助索引。

属性

文章编号: 109939 - 最后修改: 2007年1月18日 - 修订: 2.1
这篇文章中的信息适用于:
  • Microsoft Access 1.0 标准版
  • Microsoft Access 1.1 标准版
  • Microsoft Access 2.0 标准版
  • Microsoft Access 95 标准版
  • Microsoft Access 97 标准版
关键字:?
kbmt kbinfo KB109939 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 109939
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
不再更新的 KB 内容免责声明
本文介绍那些 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