首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MS Access -如何显示官员参加技能测试的日期

MS Access -如何显示官员参加技能测试的日期
EN

Stack Overflow用户
提问于 2011-05-12 03:38:02
回答 3查看 69关注 0票数 0

我有一个MS Access查询,显示官员的ID与考试分数和他们参加每种类型的年度认证考试的日期。但是,我正在尝试按军官ID分组,并在单行中列出每个军官参加的每种考试的日期,以便我可以标记他们何时需要再次参加相同类型的考试。这些军官不会在同一天参加所有类型的考试,而且通常不会与其他军官在同一天进行考试。例如,一名军官可能有资格在某一天进行日间射击和夜间射击,然后在4个月后获得步枪射击资格。我想要显示每个军官的所有日期,其中输入了分数,而不考虑分数。

我的查询中的字段是:

代码语言:javascript
运行
复制
OfficerID, TestDate, DayScore, NightScore, RifleScore

我正在尝试让它获得这样的结果:

代码语言:javascript
运行
复制
JohnDoe123, 03/15/2010, 03/15/2010, 10/04/2010

FJacobs123, 02/01/2010, 04/27/2010, 11/11/2010

我基本上是用资格赛日期代替分数。这看起来应该很简单,但是我被卡住了。请帮帮忙。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-05-12 03:45:55

您需要一个函数来连接这些值。请参阅Microsoft Access condense multiple lines in a table

然后,您的查询将如下所示:

代码语言:javascript
运行
复制
Select OfficerId
    , GetList( "Select Format( CertificateDate, 'm/d/yyyy' ) 
                    From OfficerCertificates As O1 
                    Where O1.OfficerID = " & Officers.ID & " 
                    Order By CertificateDate" ) As CertificateDates
From Officers
票数 0
EN

Stack Overflow用户

发布于 2011-05-12 03:49:23

解决此问题的另一种方法是构建一个报告表,您可以在执行过程中填充这些行,而不是使用函数动态构建结果。

对我来说,选择归根结底取决于运行查询的频率和数据更改的频率。

如果您每月只运行一次,或者如果数据经常更改,则使用特殊查询。

如果您经常显示结果,并且数据不经常更改,那么您可以从拥有一个报告表中获得真正的好处。

票数 0
EN

Stack Overflow用户

发布于 2011-05-17 03:55:38

也许不完全是您想要的,但是可以研究一下CrossTab查询。可以将所有值放入单个列中,并将它们显示为与其关联的记录所在的字段。您最终得到的是一个由姓名和日期组成的矩阵,如果测试是在该日期进行的,那么您的查询可能会在该日期字段中放入一个"Y“。这也将垂直排列在同一天进行测试的官员。

代码语言:javascript
运行
复制
Officer Name | 02/01/2010 | 03/15/2010 | 03/15/2010 | 04/27/2010 | 10/04/2010 | 11/11/2010
JohnDoe123   |            |     Y      |     Y      |            |     Y      | 
FJacobs123   |     Y      |            |            |     Y      |            |     Y
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5969655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档