MS Access中的列过多时如何转置数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MS Access中的列过多时如何转置数据相关的知识,希望对你有一定的参考价值。

我有一个标准化的表格(“ IRG02_tbl”),其中包含约74K条记录,其中包含考试成绩和解释---我正在尝试使用这些表格为每个学生生成一份报告。在某些情况下,此报告所需的记录源将超过255个字段,因此我试图找到一种解决方法。

数据问题

每个学生每学年(1到5)的考试分数在32到64之间,并且每个分数都有三种解释(一种解释给学生,一种解释给教员,一种针对范围)。有时这些分数是文本/字符串(即论文),但99%的分数是数字/双精度。学生会随着时间的推移重复这些评估,因此每个分数/解释都会附加一个“顺序”字段,以跟踪每个管理过程。因此:五年级的学生可能有320分x 3解释= 960栏/栏。

表结构(IRG02_tbl)

此表中的字段是:

  • ID(自动编号/主键)
  • StudentID(短文本)
  • 顺序(双精度;跟踪管理,即1.0、1.1等)
  • AY(长;从1至5学年的查找表中的主键)] >>
  • 指标(长;具有分数名称的查找表中的主键)
  • Score_Ultimate(加长文本;学生的分数)
  • Interpretation_Ultimate(长整数;查找表中的主键,用于分数的解释)
  • VarName_Revised(短文本;按学年重新编码度量标准名称,即“ 1_Empathy,2_Empathy”等)]
  • 这是我尝试过的:

交叉表

单个交叉表查询将是理想选择,但在这里对我不起作用,因为(1)分数/解释的数量如此之多; (2)Score_Ultimate字段不能在Access的交叉表中使用; (3)每个分数的三种解释各占一行。由于我无法将所有领域都排得很长,因此下一次我尝试按学年打破记录。

查询

我使用VBA为每个分数生成查询,例如,该查询创建了一个仅包含分数(Empathy)和第一学年解释的单个查询。

SELECT IRG02_tbl.StudentID, IRG02_tbl.AY, IRG02_tbl.Sequence, IRG02_tbl.Metric AS [P1_Empathy 
Score_label], IRG02_tbl.Score_Ultimate AS [P1_Empathy Score_Scr], Interpretations.Short_Hand AS 
[P1_Empathy Score_SH], Interpretations.Student_Txt AS [P1_Empathy Score_Std], 
Interpretations.Advisor_Txt AS [P1_Empathy Score_Adv]
FROM Interpretations INNER JOIN IRG02_tbl ON Interpretations.Interpretation_id = 
IRG02_tbl.Interpretation_Ultimate
WHERE (((IRG02_tbl.AY)= 1) AND ((IRG02_tbl.Metric)=6));

这会根据学年生成几十个查询。在刚开始的第一年中,我尝试使用StudentID和Sequence上的外部联接将它们全部链接在一起-这应该使每个学生获得一长行,少于255列。 SQL语句大约有40K个字符,因此我在运行它时还没有在这里发布它,Access只是冻结了。

制作表

我还尝试使用这些查询中的每一个来创建表,然后使用SQL与上述相同的方式将它们联接-仍然冻结。这也使数据库肿,并且首先达到了没有标准化表的目的,但是我认为这样做可以减轻运行SQL的负担。

我显然不在这里,我希望这不是一个愚蠢的问题,但是我已经尝试了所有我所知道的方法-希望得到任何帮助,欢呼声

我有一个标准化的表格(“ IRG02_tbl”),其中包含约74K条记录,其中包含考试成绩和解释---我正在尝试使用这些表格为每个学生生成一份报告。在某些情况下,记录...

答案

irg02_tbl上存在哪些索引?关于解释?什么是解释模式?

以上是关于MS Access中的列过多时如何转置数据的主要内容,如果未能解决你的问题,请参考以下文章

SQL for MS ACCESS 链接表转置行和列

如何在不使用数据透视的情况下将行转换或转置为 SQL 中的列?

MS-Access Recordset to Array,值被转置

如何将行数据转置/旋转到 Spark Scala 中的列? [复制]

如何通过取消旋转标题行来转置Excel中的列[重复]

将行转置为 BigQuery 中的列(数据透视实现)[重复]