1

示例:(使用逗号来显示列和“A_”、“B_”、“C_”来显示表格)我目前有...

A_John,A_Doe,B_MemStartDate,C_Date,

A_John,A_Doe,B_MemStartDate,C_Date,

A_John,A_Doe,B_MemStartDate,C_Date,

我希望表“C”列由课程拉出,但显示为“日期”列......换句话说,例如,课程 = 1,使用日期......等等......

该表将包含每个成员的课程历史。

会员 ID、课程 ID、日期

JohnDoe,课程 1,2013 年 10 月 10 日

JohnDoe,课程 2,2013 年 10 月 11 日

JohnDoe,课程 3,2013 年 10 月 12 日

表 C 是一对多的课程,目的是显示课程的日期,因为我会用我想要显示的 3 门不同的课程来命名列......(我只想拉 3 门不同的课程)

我想把它们排成一排...

A_John、A_Doe、B_开始日期、C_Course1Date、C_Course2Date、C_Course3Date

对不起,我的问题缺乏经验,但我通常用“复制/粘贴”来解决......哈哈

请记住,我正在使用 Access... 我可以这样做吗?


澄清...抱歉不知道如何在基本 html 中制作表格,所以有逗号

拥有这个。 从 3 个不同的表中提取,其中成员# 是唯一的并已加入。

会员,开始日期,状态,课程,课程日期 JohnSmith, 08-01-2013 , 活跃, Workshop1, 10-20-2013 JohnSmith, 08-01-2013, 活跃, Workshop2, 10-13-2013 JohnSmith, 08-01-2013 , 活跃, Workshop3, 10-28-2013 LaraBentt, 12-01-2012, 不活跃, Workshop1, 02-20-2012 LaraBentt, 12-01-2012, 不活跃, Workshop2, 02-13-2012 LaraBentt, 12-01- 2012, 不活动, Workshop3, 02-28-2012





想要这个...

成员,开始日期,状态WORKSHOP1WORKSHOP2WORKSHOP3 JohnSmith, 08-01-2013 ,活动,10-20-2013,10-13-2013,10-28-2013 LaraBentt, 12-01-2012,不活动,02- 20-2012, 02-13-2012, 02-28-2012

表列基本上是这样的......
表1 - tblMember(一对一)
成员 STARTDATE
表2 - tblRegStatus(一对一)
成员状态
表3 - tblCourses(一对多)
成员 COURSE COURSEDATE

希望这能更好地解释它!

4

1 回答 1

0

您对问题的修改使其更加清楚。

您将遇到的问题之一是,如果您有人注册了同一门课程,两次。必须理解,您只显示每人最近的注册信息。现在我们了解了这个警告 - 让我们看看如何构建它。

构建它的最简单方法是将查询类型从Select更改为Crosstab。这是通过访问接口完成的。

对于查询中的每个字段,将 Total 和 Crosstab 值设置为:

MemberName:   Total = *Group By*   Crosstab = *Row Heading*
StartDate:    Total = *Group By*   Crosstab = *Row Heading*
Status:       Total = *Group By*   Crosstab = *Row Heading*
CourseName:   Total = *Group By*   Crosstab = *Column Heading*
CourseDate:   Total = *Max*        Crosstab = *Value*

这将导致查询结果,例如:

MemberName  StartDate   Status     Biology     English        Math
----------  ---------   ------     -------     -------        ----
John        10/1/2013   Active                 11/14/2013     12/1/2013
Matthew     9/1/2013    Inactive   1/1/2013     
Peter       8/7/2013    Active     1/1/2013    4/1/2013 
Sam         1/14/2013   Inactive               11/14/2013   
William     5/19/2013   Active     1/1/2013    4/1/2013 

交叉表的优点是它会在有数据时自动添加列。
但是,您必须构建查询(联接)才能为您提供所需的数据。例如 - 您想显示列表中没有课程的成员吗?您想显示没有注册的课程吗?

微软有一个关于使用交叉表查询的页面:

http://office.microsoft.com/en-us/access-help/make-summary-data-easier-to-read-by-using-a-crosstab-query-HA010229577.aspx

如果要对三列进行硬编码,还可以手动旋转数据。再次提醒 - 请记住,我们使用的是Max聚合,因此只会显示最新的课程。使用手动数据透视,您还需要记住它仅限于您请求的数据。

进行选择查询,右键单击并单击“总计”以显示总计行。您还可以单击查询工具/设计下功能区中的总计图标。
设置你的三列:

MemberName:   Total = *Group By*
StartDate:    Total = *Group By*
Status:       Total = *Group By*

现在为您希望包括的每门课程添加一个单独的字段。在“字段”定义中输入以下内容。

Science: IIf([CourseName]="Science",[CourseDate],Null)
Biology: IIf([CourseName]="Biology",[CourseDate],Null)
Math: IIf([CourseName]="Math",[CourseDate],Null)
English: IIf([CourseName]="English",[CourseDate],Null)

将“Total”定义值设置为“Max”。

这应该会给你你正在寻找的结果。

于 2013-11-06T04:57:12.113 回答