繁体   English   中英

访问交叉表报表

[英]Access Crosstab Report

我刚接触过并且有一个数据库报告问题,我似乎无法弄清(即使有几篇关于主题的帖子:/)

该数据库包含来自200多家商店的审核信息。 审核答案是文本,而不是数字,审核日期可以是任何一天。 我想创建一个报告,其中将审计问题列为行标题,最近三个审计日期列为列标题,并将审计答案列为数据。

我有一个表格,允许用户选择商店,并提供交叉表查询。 它有效,但是它不限于最近的三个日期。 用于查询的表还列出了访问次数,因此我认为我可以在访问次数最大的情况下执行某些操作,但无济于事。

不过,主要问题是现在我无法获取交叉表报表来生成任何数据。 我在尝试的那一天发现了几段示例代码,但是每段都试图生成一行和总计。 由于这些是文本数据字段,因此总计将无法使用,尽管我尝试删除了我认为合适的代码段,但仍无法生成正确的报告。

我想到尝试的第二个选择是将交叉表查询导出到excel,但我也陷入其中。

任何帮助将不胜感激。 谢谢!

根据您的技能水平,这可能很困难。 我的方法是一堆子查询,但效果不佳。 假设您的商店由StoreID唯一标识,审核日期为Audit Date,审核结果位于单个文本字段AuditResults中。 您可以自行决定细节,但这是一个粗略的概述:

将所有数据放入一个表中,每个StoreID包含1-3行(每个审计日期1行):

  1. 进行一个简单的查询,该查询按StoreID分组并返回max(AuditDate)。 Qry1a
  2. 将Qry1a加入到审核表中以返回最近一次审核的结果。 包括一个硬编码为1的daterank列。将其Qry1b
  3. 再重复两次a和b,以获取第二次和第三次最新审核的结果(您可以加入Qry1和Qry2以删除这些结果)。 叫那些Qry2bQry3b
  4. 对源表和Qry1bQry2bQry3b使用内部联接,进行查询,每个StoreID最多返回3行。

使用此新表,进行新查询并按StoreID进行分组:

  1. 对于第一列,您将使用类似LastAudit: max(iif(DateRank=1,AuditResults,""))
  2. 重复上一步,以获取接下来的2次审核,将daterank分别更改为2和3。

这种方法的优点是,它可以处理少于3次审核的商店,或者如果您的商店列表在不断变化(因为storeID在任何地方都没有硬编码)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM